Notes

三种节点对象

一句话结论: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 对接

关联阅读

cd ..