概览
在调度更新时全局范围内存在有四个变量
const updateQueue: Fiber[] = [];
let workInProgress: Fiber;
let pendingCommit: Fiber;
let currentFiber: Fiber;
updateQueue
一个任务队列。用于注册待调度更新的 Fiber 链表。当浏览器空闲时会从中取出 Fiber 链表开始调度更新。
workInProgress
在迭代更新(新旧更替)过程中的 Fiber 链表快照。
pendingCommit
在 workLoop 过程中收集到的标记有 EffectType 的 Fiber 链表,等待 commit。
currentFiber
当前正在调度更新的 Fiber 节点。在 Hook API 中会读取并缓存一份此值的拷贝(保存现场,即 yield),用于在渲染完毕之后返回现场。