反应警告:flattenChildren(...):遇到两个具有相同键的孩子,`.$index`

Posted

技术标签:

【中文标题】反应警告:flattenChildren(...):遇到两个具有相同键的孩子,`.$index`【英文标题】:React Warning: flattenChildren(...): Encountered two children with the same key, `.$index`反应警告:flattenChildren(...):遇到两个具有相同键的孩子,`.$index` 【发布时间】:2017-09-11 22:28:59 【问题描述】:

在尝试映射和显示我从外部 api 获得的项目时,我收到错误消息,指出有相同密钥的孩子,即使我知道 ID 不同并且只显示第一张卡片。

这会引发错误,不管我使用test.id 还是index 作为键:

 tests.map( test =>
       <Col span="8" xs=span:22 md=span:6 key="test.id">
         <Card title=test.title bordered=false>test.content</Card>
       </Col> )

但另一方面,当我尝试以简单的&lt;ul&gt; 显示它时:

tests.map( test =>
  <li className="list-group-item" key=test.id>
    test.title
  </li>
)

一切正常,我显示了我收到的所有物品。

我还是 React 和 Redux 的新手,所以我不确定在哪里寻找解决方案。

非常感谢。

【问题讨论】:

【参考方案1】:

改变这一行:

   <Col span="8" xs=span:22 md=span:6 key="test.id">

   <Col span="8" xs=span:22 md=span:6 key=test.id>

test.id 用双引号括起来使它成为一个字符串,所以它总是一样的。

【讨论】:

谢谢!当然,它奏效了。我的错。花了一个小时和一些东西来寻找问题,呵呵

以上是关于反应警告:flattenChildren(...):遇到两个具有相同键的孩子,`.$index`的主要内容,如果未能解决你的问题,请参考以下文章

React 警告:flattenChildren(...):遇到两个具有相同密钥的孩子

映射警告时反应唯一键

错误的反应控制组件警告?

卸载组件时对 setState 做出反应警告

对某些案例问题做出反应警告计算匹配?

如何解决反应原生 EventEmitterListener 警告