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
相关问题
Swiper 组件嵌套图片刷新数据会闪烁
393浏览 • 1回复 待解决
JAVA UI 怎么返回上一页
5928浏览 • 2回复 已解决
如何使用Swiper组件实现下拉刷新
208浏览 • 1回复 待解决
ArkTs在Page内,如何关闭当前Page
1052浏览 • 1回复 待解决
Swiper是否支持组件复用
396浏览 • 1回复 待解决
使用swiper组件实现viewPager效果
566浏览 • 1回复 待解决
Swiper组件如何设置导航点位置
757浏览 • 1回复 待解决
卡片数据刷新时间如何支持配置
838浏览 • 1回复 待解决