React 的Fiber 架构是什么?它解决了什么问题


在 React 16 以前,协调的过程是同步且递归的。一旦开始就无法停止,如果遇到复杂的界面渲染,这个过程的耗时就会很长。主线程被阻塞,导致页面失去响应和卡顿。

Fiber 的核心思想是将一个庞大且不可中断的更新任务,拆分成许多微小的 Fiber 节点作为工作单元。每个节点都代表了一个组件实例。React 可以在每一个工作单元结束后,先暂停并检查是否有更高优先级的任务(比如用户输入)

这种方式带来了两个好处,一个是 react 可以在浏览器的每一帧的空闲时间执行部分工作。确保动画、布局和用户输入的流畅性。

另一个测试,Fiber 通过给不同任务安排优先级。比如用户输入的优先级大于获取数据触发更新的优先级,来保证应用能够随时响应用户。这也催生出了 useTransition 这样的 hook