React Fiber架构的工作原理

4 min read

React Fiber是React 16中的一种新的调节器,它通过重新设计React内部算法和数据结构,实现了更高效的渲染机制。其工作原理可以概括为以下几个步骤:

  1. 构建Fiber树:当React组件树发生更新时,会首先进行一次深度遍历,生成一个Fiber树。每个Fiber节点对应一个组件,记录了组件的状态和需要执行的操作(如更新、插入、删除等)。

  2. 调度更新:Fiber树构建完成后,React会优先处理优先级较高的更新,从而实现调度更新。React会根据每个Fiber节点的优先级计算出一个优先级队列,然后按照顺序处理队列中的更新。如果某个更新被打断了(如有更高优先级的更新到来),则React会停止当前更新并返回一个中断标记(suspense)。

  3. 发现变化:在更新过程中,React会比较前后两个版本的Fiber树,发现哪些节点需要更新。这是通过比较节点的props和state以及子节点的key,来判断节点是否需要更新。如果需要更新,则会根据节点的类型(函数组件、类组件或原生组件)调用相应的生命周期函数或渲染函数,生成新的虚拟DOM树。

  4. 提交更新:在更新完成后,React会根据更新操作生成一个DOM树,然后将其与之前的DOM树进行对比。React会根据对比结果,找出需要进行添加、删除或修改的DOM节点,并将相应的变化应用到页面上。

  5. 渲染完毕:更新完成后,React会触发相应的生命周期函数或回调函数,通知组件更新完成。同时,由于React的更新是异步的,因此更新过程可能不是一步完成的,而是分布在多个时刻。这就需要React维持一些状态,以便在各个时刻恢复更新进程。