附录 A:术语表
按出现顺序排,方便回翻。
数据结构
| 术语 | 一句话 | 出处 |
|---|---|---|
| Fiber | React 运行时的工作单元,一个对象同时描述组件、树节点、工作进度 | 第 3 章 |
| FiberRoot | 应用的"总指挥",root.current 指向当前树 | 第 1 章 |
| HostRoot Fiber | 根节点 fiber,createRoot 时和 FiberRoot 双向绑定 | 第 1 章 |
| React 元素 | JSX 编译后 jsx() 返回的普通对象,是"图纸" | 第 2 章 |
| Hook | 挂在 fiber.memoizedState 链表上的节点 | 第 12 章 |
| Effect | 副作用节点,挂在 hook 和 fiber.updateQueue 上 | 第 14 章 |
| Update | 一次状态更新的记录,串成环链表 | 第 13 章 |
| Lane | 31 位优先级位图,低 bit 高优先 | 第 22 章 |
双缓冲与树
| 术语 | 一句话 | 出处 |
|---|---|---|
| current 树 | 正在展示的树 | 第 3 章 |
| workInProgress 树 | 后台施工的树,commit 后成为 current | 第 3 章 |
| alternate | fiber 指向另一棵树配对副本的字段 | 第 3 章 |
| child / sibling / return | 单链表的三个指针,return 是栈帧返回地址 | 第 3 章 |
| baseState | hook 的"从哪算起",中断重放靠它 | 第 13 章 |
渲染与提交
| 术语 | 一句话 | 出处 |
|---|---|---|
| render 阶段 | 算新 fiber 树,可中断 | 第 4 章 |
| commit 阶段 | 落 DOM,不可中断 | 第 4、17 章 |
| beginWork | render 的"进门处":该不该干、交给谁、孩子怎么办 | 第 6 章 |
| completeWork | render 的"出门处":建 DOM、冒泡 flags | 第 8 章 |
| bailout | 三条件满足就跳过整棵子树 | 第 6、24 章 |
| 协调(reconcile) | 元素变成 fiber 并 diff 的过程 | 第 7 章 |
| Placement / Update / Deletion | commit 阶段消费的副作用标记 | 第 7、8、17 章 |
| subtreeFlags | 子树"要干的活"汇总,冒泡到根 | 第 8 章 |
并发
| 术语 | 一句话 | 出处 |
|---|---|---|
| 调度(schedule) | 决定"什么时候算、算多久" | 第 5 章 |
| 时间切片 | 到点让出主线程,下帧接着算 | 第 5、23 章 |
| 中断 / 重启 | 高优 lane 插队就丢弃半成品重算 | 第 23 章 |
| 挂起(suspend) | 渲染时抛 promise,Suspense 接住 | 第 26 章 |
| flight payload | RSC 的序列化数据格式 | 第 30 章 |
| host config | reconciler 依赖的宿主接口 | 第 34 章 |
代码里常见缩写
| 缩写 | 全称 | 含义 |
|---|---|---|
| WIP | work in progress | 施工中的树/组件 |
| sCU | shouldComponentUpdate | Class 组件重渲染开关 |
| FOUC | flash of unstyled content | 样式闪变 |
| RSC | React Server Components | 服务端组件 |
| SSR | server-side rendering | 服务端渲染 HTML |