React 从我的 div 中删除了密钥,然后因此抛出错误

React removes key from my div and then throws error because of that

我有一个反应函数组件,它只是 returns 这个:

<div name={id} key={id}>{id}</div>

我遇到的问题是,当我像这样使用这个组件时:

{Object.keys(data).map(key => (
    <MyComponent id={key} data={data[key]} />
))}

我收到错误 Warning: Each child in a list should have a unique "key" prop.,当我查看生成的 html 时,它没有密钥。

<div name="7987">7987</div>
<div name="21727">21727</div>
<div name="157119">157119</div>
<div name="232881">232881</div>

所以问题是为什么删除密钥并生成错误警告?

react 编译器需要

中的 key prop
<MyComponent id={key} data={data[key]} />

而不是

<div name={id} key={id}>{id}</div>

避免这种情况的一种方法是

<MyComponent id={key} data={data[key]} key={key} />

或者确保没有重复的键

{Object.keys(data).map((key, index) => (
<MyComponent id={key} data={data[key]} key={index} />
))}

按键在实际 dom 中未呈现。您收到该错误的原因是您没有将密钥传递给 MyComponent 所以它应该是这样的。

{Object.keys(data).map(key => (
    <MyComponent key={key} id={key} data={data[key]} />
))}

确保密钥没有重复。

您也可以像这样传递索引以避免任何重复。

{Object.keys(data).map((key, index)=> (
    <MyComponent key={index} id={key} data={data[key]} />
))}