Saber2pr's Blog

全局变量

概览

在调度更新时全局范围内存在有四个变量

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),用于在渲染完毕之后返回现场。