Notes

更新阶段的 dispatch

一句话结论:dispatch 做的事是“分配 lane → 创建 update → 入队 → 触发 root 调度”;真正的 state 计算发生在下一次 render 的更新队列处理阶段。

1. dispatch 的典型路径(概念)

  • requestUpdateLane:根据上下文/事件优先级分配 lane
  • 创建 update:写入 action、lane(可能计算 eagerState)
  • 入队:挂到 Hook 的 queue.pending 环形链表
  • scheduleUpdateOnFiber:把 lane 标记到 root 并触发调度

2. 为什么有 eagerState

  • useState 这类 reducer 可预测的情况,尝试提前算出 nextState
  • 若 nextState 与 current 相同,可跳过一次渲染(优化路径)

关联阅读

cd ..