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

如何修复React中「列表子元素需拥有唯一key属性」警告?

解决React列表渲染的key唯一警告问题

问题根源

你现在用designModdulle.epreuves.nature_epreuve作为<li>的key,但这个值在designModdulles数组的多个元素里重复了,React没法区分每个列表项,所以抛出了这个警告。

几种可行的解决办法

1. 用数据自带的唯一ID

如果你的designModdulles数组里每个对象都有唯一标识(比如id、epreuveId这类字段),直接拿它当key就好:

<div>
  <ul>
    {designModdulles.map((designModdulle) => (
      <li key={designModdulle.id}>{designModdulle.epreuves.nature_epreuve}</li>
    ))}
  </ul>
</div>

2. 结合索引和现有值生成唯一key

要是数据里没天然的唯一ID,可以把数组索引和nature_epreuve拼起来,保证key不重复:

<div>
  <ul>
    {designModdulles.map((designModdulle, index) => (
      <li key={`${designModdulle.epreuves.nature_epreuve}-${index}`}>{designModdulle.epreuves.nature_epreuve}</li>
    ))}
  </ul>
</div>

注意:这种方式只适合列表不会重新排序、增删的场景,不然可能影响React的渲染效率。

3. 生成唯一UUID(适合列表有动态操作的情况)

如果列表经常有增删改操作,建议给每个元素生成唯一的UUID:
先安装uuid库(npm install uuid),然后引入使用:

import { v4 as uuidv4 } from 'uuid';

<div>
  <ul>
    {designModdulles.map((designModdulle) => (
      <li key={uuidv4()}>{designModdulle.epreuves.nature_epreuve}</li>
    ))}
  </ul>
</div>

不过这种方法每次渲染都会生成新的UUID,可能导致不必要的重渲染,优先考虑前两种方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 01:55:32