Uniappで画像の遅延読み込みを実装する方法は何ですか。
画像の遅延読み込みを実現するには、uniappが提供するIntersectionObserverコンポーネントを使用することができます。以下は画像の遅延読み込みを実現する手順です。
- uniapp内でIntersectionObserverオブジェクトを作成し、画像が表示領域に入ったかどうかを観察します。
// 在页面的onLoad钩子函数中创建IntersectionObserver对象
onLoad() {
this.observer = uni.createIntersectionObserver(this)
}
- ページ内の画像タグにIntersectionObserverオブジェクトをバインドし、画像の初期srcをプレースホルダ画像に設定します。
<template>
<img :src="placeholder" :data-src="imageUrl" @load="onImgLoad" class="lazy-img">
</template>
- IntersectionObserverオブジェクトのコールバック関数を監視し、画像が可視領域に入ったときにdata-src属性の値をsrc属性に割り当てて、画像の遅延読み込みを実現します。
// 在页面的onReady钩子函数中开始观察图片
onReady() {
this.observer
.relativeToViewport()
.observe('.lazy-img', (res) => {
if (res.intersectionRatio > 0) {
const { dataset } = res.target
res.target.src = dataset.src
this.observer.disconnect()
}
})
}
- 画像の読み込みが完了したとき、画像のsrcを実際の画像リンクにセットします。
methods: {
onImgLoad(event) {
const { dataset } = event.target
event.target.src = dataset.src
}
}
画像が表示領域に入ると、画像のsrc属性が実際の画像リンクに置き換えられ、画像の遅延読み込みが実現されます。