React Diffing"Diffing"即“找不同”, 就是解决上文引出的React的核心目标——如何通过对比新旧虚拟DOM树, 以在最小的操作次数下将旧DOM树转换为新DOM树.在算法领域中, 两棵树的转换目前最优的算法复杂度为...;通过设置 key 属性来标识一组同级子元素在渲染前后是否保持不变.在实践中, 以上两个假设在绝大多数场景下都成立.2.1 Diffling算法描述不同类型的元素/组件当元素的标签或组件名发生变化, 直接卸载并替换以此元素作为根节点的整个子树..., 并在浏览器空闲时交由浏览器执行这些工作单元, 每个执行单元执行完毕后, 浏览器都可以选择中断渲染并处理其他需要更高优先级处理的工作.浏览器中提供了 requestIdleCallback 方法实现此功能..., 当wipFiber树构建完成后, fiberRoot.current 将从currFiber树的根节点切换为wipFiber的根节点, 以完成更新操作.3.1 基于Fiber的调度——时间切片在2.2...Hook的实现代码, 有助于理解在执行 setState 方法后都发生了什么:function useState(initial) { // 判断上一次渲染是否存在此Hook,如果存在就使用上一个state