本问答帖原创发布在华为开发者联盟社区 ,欢迎开发者前往论坛提问交流。
问题描述:
在渲染按钮组件的时候可以正常渲染,但是渲染图片的时候只能渲染出第一个。我看不懂 keyGenerator 的代码实现逻辑,不清楚为什么会这样。
解决方案:
ForEach 提供了一个名为 keyGenerator 的参数,这是一个函数,开发者可以通过它自定义键值的生成规则。如果开发者没有定义 keyGenerator 函数,则 ArkUI 框架会使用默认的键值生成函数,即(item: Object, index: number) => { return index + '__' + JSON.stringify(item); }。你这里的问题在于你更改了它默认的 keyGenerator,而根据打印的结果可以看出,你在循环里的返回值 item 是一致的,也就是出现了重复键值问题,因此不创建新组件,所以只有第一个图片被渲染出来。这边只要把 keyGenerator 换成默认的或者使用 return JSON.stringify(item)就可以了。
示例代码和其他解决方案相关的讨论,请点击原帖查看:
为什么在用ForEach渲染Array





