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

React列表key属性问题:用index仍触发"Each child in a list should have a unique 'key' prop."报错

解决React列表key属性报错问题

你的问题出在把key属性加在了Fragment内部的组件上,而非Fragment本身。React要求列表映射返回的每个直接子元素必须拥有唯一key,而你用的<>是无key的空Fragment,导致React无法识别列表项的唯一性。

修复方法有两种:

方法1:给Fragment添加key

把空Fragment换成带key的完整Fragment语法:

const selectPfp = pfps?.map((e: string, i: number) => {
  return (
    <React.Fragment key={i}>
      <PfpOption
        active={selectedPFP && selectedPFP === e}
        src={e}
        onClick={() => {
          setSelectedPFP(pfps[i]);
          console.log("clicked");
        }}
      />
    </React.Fragment>
  );
});

方法2:移除多余的Fragment

如果你的Fragment里只包含一个PfpOption组件,完全可以直接返回PfpOption,不需要额外包裹Fragment:

const selectPfp = pfps?.map((e: string, i: number) => {
  return (
    <PfpOption
      key={i}
      active={selectedPFP && selectedPFP === e}
      src={e}
      onClick={() => {
        setSelectedPFP(pfps[i]);
        console.log("clicked");
      }}
    />
  );
});

额外提醒:虽然用index当key能解决当前报错,但如果列表项有排序、增删操作,可能引发组件状态异常。如果pfp的每个e值是唯一的(比如图片URL唯一),更推荐用e作为key:

key={e}

内容的提问来源于stack exchange,提问作者Joe Ellul-Turner

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 16:06:27