写点什么

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

  • 2026-02-13
    北京
  • 本文字数:449 字

    阅读完需:约 1 分钟

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

问题描述:

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

解决方案:

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

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

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