什么是 Fiber
Fiber 把应用树区分成每一个节点的更新
每一个 ReactElement 对应一个 Fiber 对象,Fiber 呈链表结构,串联整个应用树结构 (child, siblings, return)
Fiber 会记录节点的各种状态 (state, props)(包括functional Component),并且在 update 的时候,会从原来的 Fiber(current)clone 出一个新的 Fiber(alternate)。两个 Fiber diff 出的变化(side effect)记录在 alternate上,在更新结束后 alternate 会取代之前的 current 的成为新的 current 节点。
Fiber 对 react 渲染机制的改变主要的影响:
- 异步更新:因为 Fiber 把应用树区来分成每一个节点的更新,它们的更新互相独立,不会有相互的影响,所以可以异步打断现在的更新,然后去等待一个别的任务执行完成之后回过头来继续进行更新。
- 提供了 hooks 实现的基础:hooks 是基于 Fiber 对象上能存储 memoizedState, 基于 memoizedState 上可以存储这些东西,一步一步向下构建了 hooks API 的体系。