Javascript React中键的意义是什么?

Javascript React中键的意义是什么?,javascript,reactjs,Javascript,Reactjs,React中键的意义是什么?我读到在循环中使用索引并不是键的最佳解决方案。为什么?React使用键为渲染的每个React元素提供“标识”。当两个元素具有相同的键时,它们被视为相同的元素,否则,它们是不同的。当元素在列表中重新排列或移动到渲染函数中的不同位置时,这会有所帮助,因此React可以执行有效的DOM操作以获得所需的最终结果 我读到在循环中使用索引并不是键的最佳解决方案。为什么? 因为这与根本不给列表项提供键是一样的。如果你有一个列表,比如“代码> [a,b,c] < /代码>,然后删除中

React中键的意义是什么?我读到在循环中使用索引并不是键的最佳解决方案。为什么?

React使用键为渲染的每个React元素提供“标识”。当两个元素具有相同的键时,它们被视为相同的元素,否则,它们是不同的。当元素在列表中重新排列或移动到渲染函数中的不同位置时,这会有所帮助,因此React可以执行有效的DOM操作以获得所需的最终结果

我读到在循环中使用索引并不是键的最佳解决方案。为什么?

因为这与根本不给列表项提供键是一样的。如果你有一个列表,比如“代码> [a,b,c] < /代码>,然后删除中间的一个,<代码> [a,c] < /代码>,如果它们都被索引键入,反应会认为你刚刚删除了最后一个,而不是中间的一个。

键有助于识别哪些项已更改、已添加或已删除。应为数组中的元素提供键,以使元素具有稳定的标识:

发件人:

如果键是索引,则移动项会更改它。因此,诸如非受控输入之类的组件状态可能会以意外的方式混淆和更新


From:

只要用谷歌搜索一下,就会有很多文章告诉你为什么使用它不好:我认为这个问题太广泛了。我认为你应该重新思考你的问题,试着解释一下钥匙有什么不合理的地方。否则,您只会吸引那些将文档反刍给您的答案(您得到的)。你需要给出你不理解的内容的上下文。这是正确的。数组索引可以用作键的唯一用例是,如果您确定在组件的生命周期内(非常有限的生命周期),您将只向数组追加项,而从不删除项(最后一项除外)。