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 组件嵌套图片刷新数据会闪烁
1109浏览 • 1回复 待解决
JAVA UI 怎么返回上一页
7138浏览 • 2回复 已解决
HarmonyOS 怎么控制web返回上一页
253浏览 • 1回复 待解决
HarmonyOS h5返回上一页面时会闪
316浏览 • 1回复 待解决
HarmonyOS webview侧滑返回上一页问题
566浏览 • 1回复 待解决
如何使用Swiper组件实现下拉刷新
711浏览 • 1回复 待解决
HarmonyOS Swiper里面的item高度自动刷新
343浏览 • 1回复 待解决
HarmonyOS List组件动态刷新数据问题
679浏览 • 1回复 待解决
ArkTs在Page内,如何关闭当前Page
2701浏览 • 1回复 待解决
HarmonyOS swiper组件使用问题
199浏览 • 1回复 待解决
如何关闭Swiper组件回弹效果?
270浏览 • 1回复 待解决