virtual dom

合成事件

Concurrent Mode

CM(Concurrent Mode): 并发、协程;调度可中断,可继续; 时间切片的概念

CM为React带来应用层面的Breaking Change,而且是史无前例的

启发式更新算法

v15到v16,React团队花了两年时间将源码架构中的Stack Reconciler重构为Fiber Reconciler
16到v17这一年多时间React团队究竟在做什么?==> 替换了内部使用的启发式更新算法。

1、React15实现了batchedUpdates(批量更新);
2、react15以后:Concurrent Mode(并发模式):实现一套可中断/恢复的更新机制。

  • 一套协程架构 —————— 即React16中实现的Fiber Reconciler(可以理解为react自己的Generator)
  • 基于协程架构的启发式更新算法

协程架构使更新可以在需要的时机被中断,这样浏览器就有时间完成样式布局与样式绘制,减少卡顿(掉帧)的出现。(也就是 时间切片概念,长任务分为一段一段的执行)
当浏览器进入下一次事件循环,协程架构可以恢复中断或者抛弃之前的更新,重新开始新的更新流程。
启发式更新算法就是控制协程架构工作方式的算法;

总而言之:
React16的expirationTimes模型只能区分是否>=expirationTimes决定节点是否更新。
React17的lanes模型可以选定一个更新区间,并且动态的向区间中增减优先级,可以处理更细粒度的更新。

因为要实现这样的更新,所以重构产生了fiber架构;

fiber架构

React Core Team从16年开始改造React的核心模块Reconciler
将其从流程不可中断的「递归实现」(被称为Stack Reconciler)改为流程可中断的「遍历实现
(被称为Fiber Reconciler)。

基于Fiber Reconciler,实现了一套可以区分任务优先级的机制
React Fiber

Context

hook

概念: 函数式编程


suspense

前端能精确控制组件的状态(加载中/加载失败/加载成功),即Suspense特性
Suspense特性依赖Concurrent Mode时间切片特性。

参考资料