初始阶段的状态更新
一句话结论:初次渲染(mount)会建立 Hook 与队列;如果更新发生在“render 过程中”会触发重渲染收敛状态,而正常情况下更新发生在 commit 之后并进入下一次调度。
1. mount 时做了什么
- 创建 Hook 节点:写入 initialState/baseState
- 创建 queue:准备
pending环、dispatch
2. 两类“初始阶段更新”
- commit 后的正常更新:事件触发 → dispatch 入队 → scheduleUpdate
- render phase update(不推荐):render 内调用 dispatch → React 可能重跑 render
3. 面试提示
- 强调“render 必须纯”:render phase update 会让流程复杂且性能不可控