React进阶笔记8(协调Reconciliation)

协调(Reconciliation)

React提供了一组声明式的API,让你不必关心每次更新的变化,这样使得应用的编写容易了很多。
但是在React中如何实现还并不太清晰,这篇文章解释了React对比算法的选择,让组件更新可预测并且使得高性能足够的快。

目的

当你使用React,在单一的时间点,你可以考虑render()函数作为创建React函数的树,React需要算出如何更新UI来匹配最新的树(dom)

有一个解决方案是:

将一棵树转换为另一棵树的最小操作数算法问题的通用方案。然而树种元素的个数为n,最先进的算法 的时间复杂度为O(n3) 。

如果我们在React中使用,展示1000个元素,则需要10亿次的比较,这样的操作台昂贵。相反,React基于这两点的假设,实现了一个启发的O(n)算法:

①两个不同类型的元素将产生两颗不同的树
②通过渲染器附带的key属性,开发者可以示意,那些子元素是稳定的。

实践中,这种假设适用于大部分的应用场景的。

对比算法

当对比两棵树时,React首先比较他们的根节点。根节点的type不同,他们的行为也不同。

不同类型的元素

每当根元素有不同的类型,React就会卸载旧树,创建新树,从或从

,或从

你可能感兴趣的:(React进阶笔记8(协调Reconciliation))