我无法理解协调算法是如何实现细节的,因为我觉得如果使用不同的协调算法或使用了一个天真的(总是重新渲染)方法,应用程序的输出会有所不同。
https://reactjs.org/docs/reconciliation.html处的文档说:
重要的是要记住,协调算法是一个实现细节。 React可以在每个动作上重新呈现整个应用程序;最终结果是一样的。为了清楚起见,在这种情况下重新渲染意味着为所有组件调用渲染,这并不意味着React将卸载并重新安装它们。它只会按照前面章节中规定的规则应用差异。
我会使用术语"天真的方法"引用方法:
React可以在每个动作上重新呈现整个应用
我多次重读这个页面并尝试阅读其他资源,但仍有疑问:
它只会按照规定中的规则应用差异 前几节
通过应用差异,我们不使用差异算法 本身而不是使用天真的方法? (同时解释天真 方法是本声明的目标)。
请考虑以下示例:
render() {
if (this.state.useFooter) {
return (
<div>
<Timer />
<Footer />
</div>
);
} else {
return (
<div>
<Timer />
</div>
);
}
}
此处假设this.state.useFooter
为false
,因此仅呈现
Timer
(这是一个有状态的组件)。现在,假设
this.state.useFooter
更改为true
。 React只会触发一个
更新Timer
组件(即呼叫
shouldComponentUpdate()
等等......)并安装Footer
。但是,如果我们
是使用天真的方法,结果会是什么?
a)如果它是相同的,那么有人可以告诉React的例子 协调/差异算法提供更好的性能?
b)如果不同,那么我猜测差异就是那样
安装了新的Timer
。如果是这种情况,那是否意味着
React的算法通过更新而不是挂载来优化?在
在哪种情况下输出会有所不同,从而使算法不仅仅是
实施细节。
提前致谢!