聊聊 React 16 之后的大改动
先说结论:Fiber 是 React 16 引入的新协调引擎,把之前的同步递归改成了可中断的异步任务。
React 15 用的是 Stack Reconciler(栈协调器),工作方式是这样的:
Fiber 把更新拆成一个个小任务,每次只干一点就休息一下。
可中断渲染
Scheduler) 执行任务优先级机制
双缓存
Current Tree:屏幕上正在显示的WorkInProgress Tree:内存里正在构建的因为 Render 阶段可能会被中断、重试多次,所以这些旧生命周期钩子被标记为废弃:
componentWillMountcomponentWillReceivePropscomponentWillUpdate建议用 getDerivedStateFromProps 或 useEffect 替代。
| 以前 (React 15) | 现在 (React 16+) |
|---|---|
| 同步递归 | 可中断异步 |
| 卡顿 | 流畅 |
| 无优先级 | 有优先级 |
Fiber 让 React 变得更"聪明"了,知道什么时候该干活,什么时候该休息。