假设我们有这样一个组件:
const MyComponent = ({height, children}) => (
  <div style={{ height }}>{children}</div>
)现在,当height支柱被更改时,是否会重新呈现整个组件,还是只会更改已经呈现的div的高度?
发布于 2020-01-26 12:46:10
React有一个“diffing”算法,通常是冷调节,这样组件更新是可预测的,而对于高性能的应用程序来说,更新速度足够快。
当您使用React时,在单个时间点上,您可以将
render()函数看作是创建一棵React元素树。在下一个状态或道具更新中,该render()函数将返回一个不同的React元素树。然后,React需要找出如何有效地更新UI以匹配最近的树。 当区分两棵树时,首先对两个根元素进行比较。根据根元素的类型,行为是不同的。 当比较两个相同类型的React元素时,React会查看这两个元素的属性,保持相同的基础DOM节点,并且只更新更改的属性。
有一个正式文件中的文章详细解释了它的工作原理。
发布于 2020-01-26 12:43:16
React根据Virtual的原理工作,当您更改任何影响虚拟DOM的属性时,react将新创建的虚拟DOM与它先前呈现的虚拟DOM进行比较,并决定需要进行哪些更改。
由于在本例中仅更改了“高度”属性,因此React将在原始DOM中更新该属性,而不是重新呈现和更改任何其他DOM元素。
https://stackoverflow.com/questions/59918389
复制相似问题