![](/img/trans.png)
[英]Each child in a list should have a unique "key" prop. but i'm not calling any component
[英]Each child in a list should have a unique "key" prop. I made it, but still see this error
我知道 key prop,所以我在 listitem 组件中制作了它
const ListItem = ({item}) => {
const {result, time, id} = item;
return(
<li key={id} className='list__item'>
<span className='item__result'>{result} cps</span>
<span className='item__date'>{time}</span>
<button className='item__delete'>delete</button>
</li>
)}
这是组件,我在哪里使用它
const Leadboard = () => {
const [data, setData] = useState([{result:'5,63', time:'08.06.2022', id: (new Date()).toString(16)}, {result:'5,63', time:'08.06.2022', id: +(new Date() - 1)}, {result:'5,63', time:'08.06.2022', id: +(new Date() - 2)}]);
let elements=data.map(item => {
return (
<>
<ListItem item={item} />
</>
)
});
return(
<div className='app-leadboard'>
<span className='app-leadboard__title'>Your's best results:</span>
<ol className='app-leadboard__list' type='1'>
{elements}
</ol>
</div>
)}
但渲染后我仍然看到“关键道具”错误
我花了很多时间在这上面,但不明白出了什么问题。 所以 smb,请帮忙
你有错误的清单。 <ListItem>
组件需要密钥。 (并且您可以摆脱它们周围的反应片段,因为它们毫无意义)。
React 在访问子组件中的key
属性之前首先访问空括号( <> </>
)。
所以你需要要么
key
属性传递给它// Use React.Fragment
let elements=data.map(item => { return
(
<React.Fragment key={item.id}>
<ListItem item={item} />
</React.Fragment>
)
});
并删除子( ListItem
)组件中的键
ListItem.js
<li
/* Remove this
key={id}
*/
className='list__item'>
或者
去掉空括号( <> </>
)并直接引用子组件。
let elements=data.map(item => {
return (<ListItem item={item} />)
});
并将key
属性留在子组件中
更多关于反应片段。 React 官方文档
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.