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

React Native使用Array.prototype.map渲染列表,id唯一仍报重复key错误如何解决?

报错原因与解决方案

你遇到的Warning: Encountered two children with the same key, [object Object]报错,核心原因是运行时你传给key的category.id不是字符串/数值等基础类型,而是对象类型:所有对象转为字符串时默认都会输出[object Object],只要有两个及以上元素的id是对象,就会被判定为key重复。你提供的示例数据id是合法的字符串,问题出在实际运行的Redux数据逻辑上。

常见触发场景

  • addCategory action生成新分类时,没有正确给id赋值为字符串,比如误把uuid生成实例、其他业务对象直接赋值给了id字段
  • 调整优先级的increasePriority/decreasePriority对应reducer存在逻辑bug,不小心修改了原有分类的id字段,把它改写为对象
  • Redux中state.auth.categories的初始化逻辑有问题,部分初始元素的id字段本身就是对象类型

排查与修复步骤

  1. 先在map循环中加日志确认异常id来源:
categories.map((category, index) => {
  // 打印id的类型和实际值,定位是哪项的id出了问题
  console.log(`索引${index}的id类型:${typeof category.id},值:`, category.id)
  // 原有渲染逻辑不变
})
  1. 检查所有修改categories数组的reducer逻辑(包括addCategory、increasePriority、decreasePriority、deleteCategory、updateCategoryName),确认没有误改id字段的操作
  2. 临时验证可以先把key替换为key={cate-${index}-${category.name}},确认报错消失后再定位id的异常问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 01:27:03