在 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>
Run Code Online (Sandbox Code Playgroud)