当面试问起Fiber是什么时,你可以这样给他回答。
它的主要目标是: 能够把可中断的任务切片处理。能够调整优先级,重置并复用任务。能够在父元素与子元素之间交错处理,以支持 React 中的布局。能够在 render() 中返回多个元素。更好地支持错误边界。 在了解Fiber之前,我们先了解几个概念,以及为什么需要引入Fiber Reconciliation (协调)Reconciliation 是React 的协调算法的高级描述。
Reconciliation 是被普遍理解为“虚拟 DOM”的算法。当你渲染一个 React 应用程序时,一个描述应用程序的节点树被生成并保存在内存中。然后将该树刷新到渲染环境——例如,在浏览器应用程序的情况下,它被转换为一组 DOM *** 作。当应用程序更新时(通常通过setState),会生成一棵新树。新树与之前的树进行比较,以计算更新渲染应用程序所需的 *** 作。
Scheduling (调度)可以理解为:确定什么时候应该执行某段代码。
调度核心理念便是:我们可以随心所欲的控制我们的代码。
React 目前没有很大程度的利用调度,所以才会引入Fiber。
我们已经确定 Fiber 的主要目标是使 React 能够利用调度。具体来说,我们需要能够
暂停工作,稍后再回来。为不同类型的工作分配优先级。重用之前完成的工作。如果不再需要,则中止工作。为了做到这一点,我们首先需要一种将工作分解为单元的方法。从某种意义上说,这就是Fiber。一个Fiber代表一个工作单元。
参考文献:https://github.com/acdlite/react-fiber-architecture
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)