Reactjs 什么';React文档中突变的含义是什么? 首先 第二 首先 第二 第三
React将匹配两个第一个树,匹配两个第二个树,以及 然后插入第三棵树Reactjs 什么';React文档中突变的含义是什么? 首先 第二 首先 第二 第三,reactjs,react-dom,Reactjs,React Dom,React将匹配两个第一个树,匹配两个第二个树,以及 然后插入第三棵树 公爵 维拉诺瓦 康涅狄格州 公爵 维拉诺瓦 React将使每个孩子都发生变异,而不是意识到它可以保持健康 杜克和维拉诺瓦子树完好无损。这 效率低下可能是个问题 我很难理解他们所说的“反应会使每个孩子变异”是什么意思 这可以从他们的网站上找到:在您的第一个示例中,列表中的现有项不会改变位置。当添加第三项时,它们仍然是列表中的第一项和第二项。React识别出这一点,将前两项单独保留,并添加第一项 在第二个示例中,Duk
- 公爵
- 维拉诺瓦
- 康涅狄格州
- 公爵
- 维拉诺瓦
React将使每个孩子都发生变异,而不是意识到它可以保持健康
杜克和维拉诺瓦子树完好无损。这
效率低下可能是个问题
我很难理解他们所说的“反应会使每个孩子变异”是什么意思
这可以从他们的网站上找到:在您的第一个示例中,列表中的现有项不会改变位置。当添加第三项时,它们仍然是列表中的第一项和第二项。React识别出这一点,将前两项单独保留,并添加第一项 在第二个示例中,
Duke
和Villanova
将位置从第一和第二分别更改为第二和第三。React不知道您刚在开始时添加了一项。它认为所有3个项目都是新的,因此删除所有3个项目,并重新渲染它们。如果您有一个很长的列表,那么这可能会花费大量时间
这就是为什么唯一的s很重要。如果您试图使用
<ul>
<li>Duke</li>
<li>Villanova</li>
</ul>
<ul>
<li>Connecticut</li>
<li>Duke</li>
<li>Villanova</li>
</ul>
您会注意到react将要求您为数组的每个元素提供一个键。react所做的是跟踪属于父级的数据的每个成员,以便在删除或添加更多数据时,react知道如何有效地进行调整。否则,数据中的更改将被视为变异并呈现为新的数据集,这可能是一个问题,尤其是当数据增长时。变异为“更改”。这是否意味着每次从第二棵树中找到新的子元素时,他们都会创建一个全新的树?文档只是说,当您保持顺序时,协调算法可以在最后一个子项之后快速插入或删除子项(从而更快地更新DOM)。但是如果您不保留顺序并从一开始就插入它,那么React必须检查每个新的子级并将它们重新插入到更新的DOM中。哦,现在我明白了。在第二种情况下,它必须遍历每个元素并将其添加到新树中,因为它没有添加到列表的末尾。谢谢你的解释!请注意,React提供了调解此问题的键。键允许React知道插入了哪个项,而不必重新插入每个子项,因为子项没有插入。此外:为什么设置唯一键很重要,因为:“如果键是索引,移动项会改变它。因此,受控输入之类的组件状态可能会以意外方式混淆和更新。”
<ul>
<li>Duke</li>
<li>Villanova</li>
</ul>
<ul>
<li>Connecticut</li>
<li>Duke</li>
<li>Villanova</li>
</ul>
array.map()