我该如何摆脱 - 警告:列表中的每个孩子都应该有一个唯一的“关键”道具[重复]

Posted

技术标签:

【中文标题】我该如何摆脱 - 警告:列表中的每个孩子都应该有一个唯一的“关键”道具[重复]【英文标题】:How do I get rid of - Warning: Each child in a list should have a unique "key" prop [duplicate] 【发布时间】:2022-01-12 02:33:15 【问题描述】:

我怎样才能摆脱这个警告。我讨厌在控制台中看到它。我觉得我做的一切都是对的,但我一直收到这个警告。这就是我正在做的:

      reviews.map((review, i) => 
    return (
      <>
        <sl-details summary=`$review.name` key=i open>
          <p>review.review</p>
        </sl-details>
        <br />
      </>
    );
  )

我不知道堆栈是否有任何相关性,但我正在使用 Nextjs 和鞋带。

【问题讨论】:

【参考方案1】:

您没有将key 定位在地图回调中的第一个节点

使用显式 语法声明的片段可能有 键。一个用例是将一个集合映射到一个数组 碎片

查看that page 的最后一部分。

所以你的代码应该变成:

reviews.map((review, i) => 
    return (
      <React.Fragment key=i>
        <sl-details summary=`$review.name` open>
          <p>review.review</p>
        </sl-details>
        <br />
      </React.Fragment>
    );
  )

【讨论】:

谢谢!我今天学到了一些新东西。从未意识到 不客气 :)【参考方案2】:

key=i 应该放在外部 &lt;&gt;&lt;/&gt; 元素上,为此,您需要将它们转换为完整的 &lt;Fragment&gt; 元素。

更新代码:

reviews.map((review, i) =>
    <Fragment key=i>
      <sl-details summary=`$review.name` open>
        <p>review.review</p>
      </sl-details>
      <br />
    </Fragment>
)

PS 我还缩短了它以不使用不需要的return

【讨论】:

你是对的。谢谢!

以上是关于我该如何摆脱 - 警告:列表中的每个孩子都应该有一个唯一的“关键”道具[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何修复警告:列表中的每个孩子都应该有一个唯一的“关键”道具

如何找到警告的原因:列表中的每个孩子都应该有一个唯一的“关键”道具

警告 - 列表中的每个孩子都应该有一个唯一的“关键”道具

React - 警告:列表中的每个孩子都应该有一个唯一的“关键”道具

警告:列表中的每个孩子都应该有一个唯一的“关键”道具。反应.js

警告:列表中的每个孩子都应该有一个唯一的“关键”道具