我是React的新手。我想删除此警告。我试着探索Web并尝试了许多解决方案,但没有一个对我有效(key、rowkey、loop等(
错误:
检查
RankingTable
的渲染方法tr中(由RankingTable创建(在排名表react_devtools_backend.js:2540:25 中
你对这个问题有想法吗?
return (
<div className = "overflow-x-auto">
<table className="ranking_table table-auto border-collapse w-full" >
<caption className="sr-only">{ caption }</caption>
<thead>
{
fields.map((field) => (
<tr>
<th>{ field.player }</th>
<th>{ field.total }</th>
<th>{ field.exact }</th>
<th>{ field.good } </th>
</tr>
))
}
</thead>
<tbody>
{
rows.map((row, loop) => (
<tr key={row.key}>
<td>
<span className={`rounded-full rank ranking-${loop + 1}`}>{ loop + 1 }</span> { row.username },
</td>
<td>
{ row.cntTotal }
</td>
<td>
{ row.cntExact }
</td>
<td>
{ row.cntGood }
</td>
</tr>
))
}
</tbody>
</table>
</div>
)
谢谢!
键帮助React识别哪些项目已经更改、添加或删除。应该为数组中的元素提供密钥,以使元素具有稳定的身份。内容来源https://reactjs.org/docs/lists-and-keys.html#keys
您必须为映射的每次迭代传递密钥中的唯一值。在循环外迭代中不能重复。如果每个对象的字段中都存在一个唯一的id或任何唯一的值,则可以将其传入key。
<thead>
{
fields.map((field) => (
<tr key={field.<id or something that is unique>}>
<th>{ field.player }</th>
<th>{ field.total }</th>
<th>{ field.exact }</th>
<th>{ field.good } </th>
</tr>
))
}
</thead>
正如@Shawn Yap所说,映射中缺少key
。一定要用一些独特的东西。
选择键的最佳方法是使用一个字符串,该字符串在其同级项中唯一标识列表项。大多数情况下,您会使用数据中的ID作为密钥。
更新后的thead
应该如下所示:
<thead>
{
fields.map((field) => (
<tr key={field.<id or something that is unique>}>
<th>{ field.player }</th>
<th>{ field.total }</th>
<th>{ field.exact }</th>
<th>{ field.good } </th>
</tr>
))
}
</thead>