如何唯一地识别组件?

时间:2016-10-11 10:23:21

标签: reactjs

我了解到react使用key来识别元素(组件)。

以下哪项反应会考虑识别元素? 还有别的吗?

  • 元素类型
  • 元素位于整个树中

2 个答案:

答案 0 :(得分:0)

你说的一切都是正确的。您可以通过检查您的反应应用程序的元素并查看组件来验证它。例如,您将看到带有data-reactroot,data-reactid

的div

您可能还想查看https://github.com/facebook/react-devtools

答案 1 :(得分:0)

你说错了,React使用密钥来识别实例(组件)。虽然它并不是真正的性能,但密钥用于确定哪些实例可以重用(因此也可以带来更好的性能)。如果密钥一直在变化,React将不必要地重新创建节点,子组件将失去其状态。

您的React应用程序的每个级别都有一个密钥。使用JSX时,您可以使用:<Button key={id} />显式指定密钥。如果未提供任何键属性,则React将使用组件的索引(在当前级别中)隐式地将键属性添加到组件。

那你为什么不总是让React为你做这个?对于在this.state中维护数据的组件,如果删除或重新排序兄弟姐妹(在同一级别中),事情会变得奇怪。您可以在React文档中read more about this