在 Sapper 中进行这种延迟加载的最佳方法是什么:
- 导航到包含图像的页面
- 首先从src下载小图
- 开始从 data-src 加载更大的版本,并在准备好后将其更改为 src
- 导航到另一个页面
- 回到图片页面,已经在那里加载了更大的图片
如果有人可以提供帮助,我会很高兴:)
在 Sapper 中进行这种延迟加载的最佳方法是什么:
如果有人可以提供帮助,我会很高兴:)
你正在寻找行动。这些是在将元素添加到 DOM 时运行的函数,并使用destroy
and (可选)update
方法返回一个对象。
您可以执行以下操作(此处为交互式演示):
<img
alt="random photo"
src="https://picsum.photos/100/50"
use:lazy="{src: 'https://picsum.photos/400/200'}"
>
<style>
img {
width: 400px;
height: 200px;
}
</style>
<script>
const loaded = new Map();
export default {
actions: {
lazy(node, data) {
if (loaded.has(data.src)) {
node.setAttribute('src', data.src);
} else {
// simulate slow loading network
setTimeout(() => {
const img = new Image();
img.src = data.src;
img.onload = () => {
loaded.set(data.src, img);
node.setAttribute('src', data.src);
};
}, 2000);
}
return {
destroy(){} // noop
};
}
}
};
</script>