javascript - 我应该使用什么作为 react 中 "row"元素的键?

标签 javascript reactjs key

我有一个画廊,每行显示许多书籍。该画廊将书籍数组作为 Prop ,并使用“itemsPerRow” Prop 将书籍分块为二维数组,然后循环遍历所有书籍,以网格状结构显示书籍。

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,应该避免。那么我应该在这里使用什么作为 key <div key={index} className="tile is-ancestor">而不是索引?

最佳答案

key 属性使用唯一标识符(book.id,如果是唯一的话,也可以是 book.title)。如果您的数据没有唯一标识符,可以使用索引

关于javascript - 我应该使用什么作为 react 中 "row"元素的键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71514597/

相关文章:

reactjs - Material UI - 打开弹出窗口时取消阻止滚动

python - 通过识别具有相同键但不同值的集合来比较 Python 中的两个字典

javascript - 使用jQuery可见引导模态时添加iFrame

JavaScript 参数选项

javascript - 自定义视频进度条在单击时重置

javascript - 文本框的边框被另一个类覆盖

reactjs - 扩展 React 风格的组件

Javascript React Switch Case 带有动态键?

javascript - 使用 Javascript 对象作为对象键

javascript - 如何在 v-for 循环中匹配两个数组的并集