为什么在用ForEach渲染Array时,只能渲染出来第一个图片呢?

0 评论 116 浏览 0 收藏 2 分钟

为什么在用ForEach渲染Array时,只能渲染出来第一个图片呢?

本问答帖原创发布在华为开发者联盟社区 ,欢迎开发者前往论坛提问交流。

问题描述:

在渲染按钮组件的时候可以正常渲染,但是渲染图片的时候只能渲染出第一个。我看不懂keyGenerator的代码实现逻辑,不清楚为什么会这样。

解决方案:

ForEach提供了一个名为keyGenerator的参数,这是一个函数,开发者可以通过它自定义键值的生成规则。如果开发者没有定义keyGenerator函数,则ArkUI框架会使用默认的键值生成函数,即(item: Object, index: number) => { return index + ‘__’ + JSON.stringify(item); }。
你这里的问题在于你更改了它默认的keyGenerator,而根据打印的结果可以看出,你在循环里的返回值item是一致的,也就是出现了重复键值问题,因此不创建新组件,所以只有第一个图片被渲染出来。这边只要把keyGenerator换成默认的或者使用return JSON.stringify(item)就可以了。

示例代码和其他解决方案相关的讨论,请点击原帖查看:

为什么在用ForEach渲染Array<ResourceStr>时,只能渲染出来第一个图片呢-华为开发者问答 | 华为开发者联盟 (huawei.com)

更多精彩内容,请关注人人都是产品经理微信公众号或下载App
评论
评论请登录
  1. 目前还没评论,等你发挥!