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
按赞同
/
按时间
nn_wzy

在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
相关问题
JAVA UI 怎么返回上一页
5313浏览 • 2回复 已解决
Swiper组件如何设置导航点位置
131浏览 • 1回复 待解决
如何获取组件刷新时间
318浏览 • 1回复 待解决
卡片数据刷新时间如何支持配置
313浏览 • 1回复 待解决
Scroll组件展示位置如何调整
414浏览 • 1回复 待解决
Swiper数量是否有限制
308浏览 • 1回复 待解决
JS swiper 怎么像list样动态添加item?
4789浏览 • 1回复 待解决