Reactjs React Reender道具更改与本地状态更改

Reactjs React Reender道具更改与本地状态更改,reactjs,Reactjs,为什么组件演示不在计数器更改时重新启动? 我知道props.children与前面的相同,但是本地状态发生了变化,所以应该重新播放。更改局部状态是否以某种方式进行了优化,以检测顶部组件的某些部分是否应重新招标 在第二个例子中,它确实是rerender,这些例子之间的区别是什么 在示例中,您可以单击按钮并在控制台中查看是否重新提交了演示。这是因为将子项参数传递给顶部组件就是传递对该对象的引用。React可以检测到与以前的版本相比没有任何更改,因此不会重新渲染 当您在Top组件中使用name呈现

为什么组件演示不在计数器更改时重新启动? 我知道props.children与前面的相同,但是本地状态发生了变化,所以应该重新播放。更改局部状态是否以某种方式进行了优化,以检测顶部组件的某些部分是否应重新招标

在第二个例子中,它确实是rerender,这些例子之间的区别是什么


在示例中,您可以单击按钮并在控制台中查看是否重新提交了演示。

这是因为将
子项
参数传递给
顶部
组件就是传递对该对象的引用。React可以检测到与以前的版本相比没有任何更改,因此不会重新渲染


当您在
Top
组件中使用name
呈现组件时,您每次都呈现一个新版本的
Demo
组件。

在第一种情况下,您传递的是
子组件
,它是
道具
的一部分,本质上是在
Top
组件的每次重新呈现上,正在返回相同的
子对象
引用,因此React会检测到该引用,并且不会重新呈现
演示
组件

在第二种情况下,React将在内部再次执行
React.createElement(…)
以创建
Demo
组件,这是一个新的引用

这里有一句很好的话来记住这一点:-

如果React组件在其 与上次一样渲染输出,React将跳过重新渲染 那个孩子

我在这里提到这个-