Swiper组件刷新不了当前已经展示的一页数据

如何才能刷新全部数据,代码如下:

positionId: string 
private pages: HomeFunctionCellModel[][] = [] 
private listener: DataChangeListener | null = null 
private bannerViewModel: ActivityBannerViewModel | null = null 
 
/// IDataSource 
totalCount(): number { 
return this.pages.length 
} 
/// IDataSource 
getData(index: number): HomeFunctionCellModel[] { 
return this.pages[index] 
} 
/// IDataSource 
registerDataChangeListener(listener: DataChangeListener): void { 
this.listener = listener 
} 
/// IDataSource 
unregisterDataChangeListener() { 
} 
 
constructor(positionId: string) { 
this.pages = this.updateActivitiesToPages(this.localDefaultConfig()) 
this.positionId = positionId 
if (!positionId) return 
const bannerViewModel = new ActivityBannerViewModel(positionId, success => { 
if (this.bannerViewModel?.bannerImageLoadFinished && success) { 
const models = this.sortAndUnique(this.bannerViewModel.items.map(activity => { 
return convertActivityToHomeFunctionModel(activity) 
})) 
this.pages = 。。。 
this.listener?.onDataReloaded() // 异步调用了 onDataReloaded 页面内容没有更新,滚动页面后新出来的页面数据为新的,回滚到之前一页的时候数据依然不会更新。 
} 
}) 
} 
}
HarmonyOS
2024-04-29 21:05:47
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
路易不知第几世

在notifyDataReload方法内会又调用listener.onDataReloaded方法,通知LazyForEach需要重建所有子节点。LazyForEach会将原所有数据项和新所有数据项一一做键值比对,若有相同键值则使用缓存,若键值不同则重新构建。

参考链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V1/arkts-rendering-control-lazyforeach-0000001580345086-V1

分享
微博
QQ
微信
回复
2024-04-30 11:34:26
相关问题
Swiper 组件嵌套图片刷新数据会闪烁
1247浏览 • 1回复 待解决
JAVA UI 怎么返回上一页
7244浏览 • 2回复 已解决
HarmonyOS 怎么控制web返回上一页
551浏览 • 1回复 待解决
HarmonyOS webview侧滑返回上一页问题
793浏览 • 1回复 待解决
HarmonyOS router.back无法返回到上一页
29浏览 • 1回复 待解决
HarmonyOS 滑动下一页效果应该如何做
30浏览 • 1回复 待解决
HarmonyOS h5返回上一页面时会闪
445浏览 • 1回复 待解决
如何使用Swiper组件实现下拉刷新
830浏览 • 1回复 待解决
ArkTs在Page内,如何关闭当前Page
3014浏览 • 1回复 待解决
HarmonyOS List组件动态刷新数据问题
997浏览 • 1回复 待解决
HarmonyOS Swiper里面的item高度自动刷新
452浏览 • 1回复 待解决