我使用React来渲染数据列表,但数据中的每个项目都没有被赋予id或uuid或者像identify属性这样的东西。我可以使用项目索引作为密钥吗?像:
data.map((item, index) => {
<Item key={index}></Item>
})
我担心的是,如果页面上的其他列表也使用订单索引作为子组件键,那会有关系吗?密钥应该是唯一标识吗?
答案 0 :(得分:2)
密钥只需要对该列表唯一。
我最初也有这种担心。
来自官方文档:
请记住,钥匙只能在其兄弟姐妹中独一无二,而不是 全球独一无二。
密钥应该稳定,可预测且独特。不稳定的钥匙(如 Math.random()生成的那些将导致许多节点 不必要地重新创建,这可能会导致性能下降和 儿童成分失去了状态。
在此处阅读更多内容:Reconciliation - Keys
答案 1 :(得分:1)
如果您不打算在列表中移动元素,则可以执行此操作。每次移动元素时,您的元素都会有不同的索引,因此反应无法跟踪移动的元素以及哪些元素只是更改了数据。
索引在列表中必须是唯一的,它们可能与其他列表相交。