Hope0922 +
hopexie0922@.163.com

react-fiber

React Fiber 【Fiber 架构就是用 异步的方式解决旧版本 同步递归导致的性能问题】

旧版 React 通过递归的方式进行渲染,使用的是 【JS 引擎自身的函数调用栈】,它会一直执行到栈空为止。 Fiber 实现了自己的【组件调用栈】,它以链表的形式遍历组件树,可以灵活的暂停、继续和丢弃执行的任务。 实现方式是使用了浏览器的 requestIdleCallback 这一 API: 将 计算任务 分给成一个个小任务,分批完成,在完成一个小任务后,将控制权还给浏览器,让浏览器利用间隙进行 UI 渲染

React Fiber 出现的背景

当页面元素很多,且需要频繁刷新的场景下,浏览器页面会出现卡顿现象,原因是因为 计算任务 持续占据着主线程,从而阻塞了 UI 渲染

React 框架内部的运作可以分为 3 层

 *
 * Fiber 其实指的是一种数据结构它可以用一个纯 JS 对象来表示
 *
 * const fiber = {
        stateNode,    // 节点实例
        child,        // 子节点
        sibling,      // 兄弟节点
        return,       // 父节点
    }

Fiber Reconciler 的 2 个阶段:

【V16 版本之前】栈调和(Stack reconciler) –> 【V16 版本之后】 Fiber reconciler

React diff 将传统 diff 算法的复杂度 O(n^3) 复杂度的问题转换成 O(n) 复杂度的问题 React Diff 三大策略: 【将 Virtual DOM 树转换成 actual DOM 树的最少操作的过程称为 协调(Reconciliaton)】

Blog

About Me