三种节点对象
一句话结论:React 用三类核心数据结构把“描述 UI”变成“可调度的运行时工作单元”——ReactElement 负责描述,FiberNode 负责运行,FiberRootNode 负责承载与调度。
1. ReactElement:UI 的“描述”
- JSX 编译产物,本质是普通对象:
{ type, key, props, ref } - 近似不可变:每次 render 产生新对象,便于对比与推导
2. FiberNode:可中断的“工作单元”
- 运行时节点:保存 state、hooks、更新队列、优先级(lanes)、副作用标记(flags)
- 通过
child/sibling/return指针组成 Fiber 树,支持深度优先遍历 - 通过
alternate实现双缓冲(current ↔ workInProgress)
3. FiberRootNode:整棵树的“容器与调度中心”
- 连接宿主环境(DOM 容器)、当前树(
current)、调度信息(pendingLanes 等) - 决定“渲染哪些 lanes、何时 commit”,并与 Scheduler 对接