Notes

baseQueue 与 queue.pending

一句话结论:queue.pending 存“新进来的更新”,baseQueue 存“上次没算完/被跳过的更新”;每次渲染会把 pending 合并进 baseQueue,再按优先级决定哪些能被处理。

1. 为什么需要两条队列

  • 并发渲染可能只处理部分 lanes
  • 被跳过的更新不能丢:要在未来更低优先级渲染时继续处理

2. 一次 render 内的典型处理(概念)

  1. pending 环拆开并合并到 baseQueue
  2. baseState 开始依次应用 update
  3. 遇到优先级不够的 update:跳过并留在新的 baseQueue
  4. 产出 memoizedState(本次可见的 state)

关联阅读

cd ..