使用foreach&lazyforeach循环渲染时,有时候会出现更改数据源时,界面不刷新的情况。请问可能是什么原因?

北向实践与赋能 显示全部楼层 发表于 2024-1-4 11:23:52

使用foreach&lazyforeach循环渲染时,有时候会出现更改数据源时,界面不刷新的情况。请问可能是什么原因?

您尚未登录,无法参与评论,登录后可以:
参与开源共建问题交流
认同或收藏高质量问答
获取积分成为开源共建先驱

精彩评论1

北向实践与赋能

沙发 发表于 2024-1-4 11:24:12

使用foreach&lazyforeach循环渲染时,会出现更改数据源时,界面不刷新的情况。如何解决?

关键字 ForEach/LazyForEach,循环渲染

解决方案 可能由于没有在foreach&lazyforeach参数中写keyGenerator或者keyGenerator函数生成的结果重复。在更换数据源时,导致自动生成的keyGenerator重复,系统没有捕捉到key的变化,导致组件没有刷新。 ForEach/LazyForEach刷新原理:如果开发者没有写keyGenerator,框架会自动基于item和index生成key, 如果函数缺省,框架默认的键值生成函数为(item: T, index: number) => { return index + '__' + JSON.stringify(item); },修改状态变量数据源时,要ForEach或LazyForEach会捕捉到key的变化,从而通过重建组件节点来刷新。

参考资料 https://docs.openharmony.cn/pages/v4.0/zh-cn/application-dev/quick-start/arkts-rendering-control-foreach.md

Copyright   ©2023  OpenHarmony开发者论坛  京ICP备2020036654号-3 |技术支持 Discuz!

返回顶部