已给React列表子元素设置key prop仍提示Each child in a list应有唯一key报错
问题原因
- _id存在重复/缺失:首先排查你后端返回的
notes数组里,是否有多个条目_id值相同,或者部分条目没有_id字段。如果新增笔记时你前端临时生成的笔记项还未拿到后端返回的真实_id,用了重复的占位值,也会出现这个问题。 - 警告来源不是当前map:这个警告可能是
Noteitem组件内部的列表渲染没有加key导致的,你可以点开控制台警告的组件调用栈,定位触发警告的具体列表位置,不要只盯着外层的map看。 - 字段名不匹配:检查你后端接口返回的主键字段名是不是确实是
_id,如果后端返回的是id,那你取note._id就会得到undefined,所有项的key都相同就会触发警告。
解决方法
- 先打印验证
_id的有效性,执行代码console.log(notes.map(note => note._id)),检查输出的数组里是否有重复值、空值或者undefined。 - 如果是临时新增的未同步到后端的笔记没有
_id,可以临时用uuid等工具生成唯一值作为临时key,等后端返回真实_id后再替换。 - 调试阶段可以临时把key改成
key={`${note._id || 'temp'}-${index}`},如果警告消失就可以确定是_id的有效性问题,再去排查后端返回数据的逻辑即可,注意不要长期用索引作为key,避免出现渲染异常。 - 检查
Noteitem组件的代码,确认内部所有列表渲染都正确添加了唯一key。
内容的提问来源于stack exchange,提问作者Shashank Thapliyal
相关产品推荐
相关产品推荐

