React.js:每个子组件中的键值应该是唯一的吗?

时间:2016-07-15 07:30:51

标签: javascript reactjs

我使用React来渲染数据列表,但数据中的每个项目都没有被赋予id或uuid或者像identify属性这样的东西。我可以使用项目索引作为密钥吗?像:

data.map((item, index) => {
    <Item key={index}></Item>
})

我担心的是,如果页面上的其他列表也使用订单索引作为子组件键,那会有关系吗?密钥应该是唯一标识吗?

2 个答案:

答案 0 :(得分:2)

密钥只需要对该列表唯一。

我最初也有这种担心。

来自官方文档:

  

请记住,钥匙只能在其兄弟姐妹中独一无二,而不是   全球独一无二。

     

密钥应该稳定,可预测且独特。不稳定的钥匙(如   Math.random()生成的那些将导致许多节点   不必要地重新创建,这可能会导致性能下降和   儿童成分失去了状态。

在此处阅读更多内容:Reconciliation - Keys

答案 1 :(得分:1)

如果您不打算在列表中移动元素,则可以执行此操作。每次移动元素时,您的元素都会有不同的索引,因此反应无法跟踪移动的元素以及哪些元素只是更改了数据。

索引在列表中必须是唯一的,它们可能与其他列表相交。