我有一个 gallery ,每行可以展示很多书.该图库将一组书籍作为props ,并使用"itemsPerRow"props 将书籍分割成二维数组,然后循环遍历所有书籍,以网格状 struct 显示书籍.
export default function Gallery({ items, itemsPerRow, renderLink }) {
itemsPerRow = itemsPerRow ?? 3
const rows = chunk(items, itemsPerRow)
const renderEmptyItems = (itemsToRender) => {
const items = []
for(let n = itemsToRender; n > 0; n--) {
items.push(<GalleryItem key={`empty_${n}`} empty/>)
}
return items
}
return (
<div>
{
rows.map((row, index) => (
<div key={index} className="tile is-ancestor">
{row.map(item => <GalleryItem key={item.id} renderLink={renderLink} {...item}/>)}
{/* Add empty gallery items to make rows even */}
{index + 1 === rows.length && renderEmptyItems(itemsPerRow - row.length)}
</div>
))
}
</div>
)
}
然而,除非我给代表一行的每个div一个键,否则react会抱怨缺少键.据我所知,使用索引作为键实际上无助于做出react ,应该避免.那么我应该用什么来代替索引呢?