You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

map函数第一个参数可传什么作为占位符?key为[object Object]重复警告如何解决

问题原因

Array.prototype.map 回调函数的入参顺序固定为:第一个参数是当前遍历到的数组元素,第二个参数才是对应索引。你当前的代码把第一个元素参数命名为i并标记为number类型,但实际它是listArray中的对象元素,直接作为key传入时会被转为字符串[object Object],自然会出现重复key警告。

第一个参数占位符写法

如果不需要使用当前遍历的元素,可以用下划线_作为第一个参数的占位符,这是业界通用的无意义参数约定写法。

key重复问题解决

方案1:使用索引作为key(仅适用于静态无排序、增删的列表)

调整参数顺序,取map的第二个参数作为索引赋值给key,示例代码如下:

{listArray.map((_: ListItemType, i: number) => (
    <IRServiceAlertRulesListItem addListItem={addListItem} listArray={listArray} key={i} />
  ))}

注意把ListItemType替换为你listArray数组中元素的实际类型。

方案2:使用业务唯一标识作为key(推荐)

如果你的列表存在排序、增删操作,用索引作为key可能导致组件状态错乱,优先取每个元素自带的唯一属性(比如id、uuid等业务唯一字段)作为key,示例代码如下:

{listArray.map((item: ListItemType) => (
    <IRServiceAlertRulesListItem addListItem={addListItem} listArray={listArray} key={item.id} />
  ))}

内容的提问来源于stack exchange,提问作者Gena

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 15:54:04