HarmonyOS 鸿蒙Next 救命 Swiper组件怎样做到真正的懒加载
HarmonyOS 鸿蒙Next 救命 Swiper组件怎样做到真正的懒加载
已经给Swiper组件用上lazyforeach了,一些该设置的属性也设置了,但是当我往下一页滑动时还是会加载两页(触发了两个子组件的aboutToAppear
函数),研究了好多天了,救救小弟,代码如下:
Swiper(this.swiperController) {
// @ts-ignore
LazyForEach(this.data, (item: BookPageBean) => {
BookPageItem({ item: item })
}, item => item)
}
.width('100%')
.height('100%')
.cachedCount(0)
.indicator(false)
.loop(false)
.curve(Curve.Linear)
.onChange((index: number) => {
console.info("tag", "onChange:" + index.toString())
})
BookPageItem代码大概如下:
@Component
export default struct BookPageItem {
aboutToAppear() {
console.log("tag", "aboutToAppear item:" + this.item.id)
}
...
}
更多关于HarmonyOS 鸿蒙Next 救命 Swiper组件怎样做到真正的懒加载的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
预加载一页很合理嘛,
基本信息
这是一段测试文本。
这是另一段测试文本。
更多关于HarmonyOS 鸿蒙Next 救命 Swiper组件怎样做到真正的懒加载的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
js/ts 不具备完全确定性,
cachedCount 这个需要设置吧
设成1就会变成 一开始进入加载两页 ,后面每滑一页预加载下一页 , 设成0一开始进入加载1页,但是一滑动就会一次性加载后面的第二第三页, 在想怎样才能做成安卓那种翻一页,那一页显示了才去加载数据。
你说的这个设成1或0后的逻辑没问题呀,显示一页,留一页供滑动用,一旦滑动就加载第三页,这也是为了用户体验考虑不是?等用户滑动时临时加载肯定影响体验了吧。
另外,这个逻辑影响你应用性能了还是什么原因不能接受?
在HarmonyOS鸿蒙Next中,Swiper组件实现真正的懒加载可以通过以下方式:
-
使用
lazyForEach
:lazyForEach
允许在Swiper中动态加载子组件,只有在子组件进入可视区域时才进行渲染,减少初始加载压力。 -
结合
onPageChange
事件:通过监听Swiper的页面切换事件,在页面切换时动态加载或卸载内容,确保只有当前页面和相邻页面的内容被加载。 -
自定义懒加载逻辑:在Swiper的每个子组件中,通过判断是否在可视区域内来决定是否加载数据或渲染内容,进一步优化性能。
通过这些方法,可以有效实现Swiper组件的懒加载,提升应用性能。