这意味着当树上有1000个元素时, 需要10亿次比较, 显然远远不够高效.React在基于以下两个假设的基础上, 提出了一套复杂度为 O(n) 的启发式算法不同类型(即标签名、组件名)的元素会产生不同的树...;通过设置 key 属性来标识一组同级子元素在渲染前后是否保持不变.在实践中, 以上两个假设在绝大多数场景下都成立.2.1 Diffling算法描述不同类型的元素/组件当元素的标签或组件名发生变化, 直接卸载并替换以此元素作为根节点的整个子树...title等, 然后递归对比其子节点.对于 style 属性, React会继续深入对比, 仅更新有改变的属性, 如color、fontSize等.同一类型的组件当组件的props更新时, 组件实例保持不变..., 同时具备以下特性:可暂停、可恢复的更新;可跳过的重复性、覆盖性更新;具备优先级的更新.对于递归形式的程序来说, 这些是难以实现的....Fiber从概念上来说, Fiber就是重构后的虚拟DOM节点, 一个Fiber就是一个JS对象.Fiber节点之间构成 单向链表 结构, 以实现前文提到的几个特性: 更新可暂停/恢复、可跳过、可设优先级