我可以在屏幕上看到表,并且db.json中的所有信息都已导入。当我打开控制台时,它显示以下错误:文本节点不能作为<table>
[ReactJS]的子级出现;警告:列表中的每个子项都应该有一个唯一的“键”属性。我尝试将div更改为fragment,但没有效果。如何解决此问题?
return (
<div className='container'>
<table className="table">
<thead>
<tr className='bg-dark text-white'>
<th scope="col">#</th>
<th scope="col">Product Name</th>
<th scope="col">Product Number</th>
<th scope="col">Color</th>
<th scope="col">List Price</th>
<th scope="col">Modified Date</th>
<th scope="col">Action</th>
</tr>
</thead>
<tbody>
{products.map((product, index) => (
<tr>
<th scope='row'> {index + 1}</th>
<td>{product.name}</td>
<td>{product.number}</td>
<td>{product.color}</td>
<td>{product.price}</td>
<td>{product.date}</td>
<td>
<Link className='btn btn-primary m-2'><i className="fa fa-eye" aria-hidden="true"></i></Link>
<Link className='btn btn-otline-primary m-2'>Edit</Link>
<Link className='btn btn-danger m-2'>Delete</Link>
</td>
</tr>
))};
</tbody>
</table>
<Link className='btn btn-outline-dark w-25' to='/product/add'>
Add Product
</Link>
</div>
);
}
2条答案
按热度按时间zrfyljdw1#
文本节点不能作为
<table>
的子节点出现在
tbody
元素的末尾有一个分号,它是独立的。删除它。警告:列表中的每个子项都应该有唯一的“键”属性。
将数组Map到JSX时,最外层的Map元素需要一个React键。React键在同级元素中应该是唯一的。
id
和其他GUID属性可以提供很好的React键,但只要数组没有发生变化,数组索引就可以作为后备。示例:
请参阅Lists and Keys以了解有关React密钥用法的详细信息。
9w11ddsr2#
使用
map()
时,必须为直接Map的Element提供一个unquiekey
,以便React识别哪些项已更改、已添加或已删除。它需要在它的兄弟姐妹中是独一无二的。
参考:
https://reactjs.org/docs/lists-and-keys.html#keys