OpenHarmony开发者论坛
标题:
使用foreach&lazyforeach循环渲染时,有时候会出现更改数据源时,界面不刷新的情况。请问可能是什么原因?
[打印本页]
作者:
北向实践与赋能
时间:
2024-1-4 11:23
标题:
使用foreach&lazyforeach循环渲染时,有时候会出现更改数据源时,界面不刷新的情况。请问可能是什么原因?
[md]使用foreach&lazyforeach循环渲染时,有时候会出现更改数据源时,界面不刷新的情况。请问可能是什么原因?
[/md]
作者:
北向实践与赋能
时间:
2024-1-4 11:24
标题:
使用foreach&lazyforeach循环渲染时,会出现更改数据源时,界面不刷新的情况。如何解决?
[md]**关键字**
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/page ... -control-foreach.md
[/md]
欢迎光临 OpenHarmony开发者论坛 (https://forums.openharmony.cn/)
Powered by Discuz! X3.5