renderWithHooks
一句话结论:
renderWithHooks是函数组件渲染的入口:它初始化 Hook 运行环境(dispatcher/指针),执行组件函数,并在结束时把本次渲染产生的 Hook 链表挂回 Fiber。
1. 它做的三件核心事(概念)
- 准备上下文:标记
currentlyRenderingFiber,重置 hook 指针 - 选择 dispatcher:区分 mount/update(不同 hook 实现函数)
- 执行组件函数:在调用
useState/useEffect/...时推进 Hook 链表
2. render phase update 的处理
- 如果 render 过程中触发了更新(不推荐),React 可能会重跑渲染以收敛状态
- 这也是“Hooks 必须无副作用、保持顺序”的原因之一