
2025-05-05 日报 Day177

今日的鸡汤
一切伟大成就,都是接续奋斗的结果;一切伟大事业,都需要在继往开来中推进。
今日学习内容
1、https://react.iamkasong.com/
今日笔记
Fiber架构的实现原理:
1、在新的React架构一节中,我们提到的虚拟DOM在React中有个正式的称呼——Fiber。在之后的学习中,我们会逐渐用Fiber来取代React16虚拟DOM这一称呼。
在React15及以前,Reconciler采用递归的方式创建虚拟DOM,递归过程是不能中断的。如果组件树的层级很深,递归会占用线程很多时间,造成卡顿。
为了解决这个问题,React16将递归的无法中断的更新重构为异步的可中断更新,由于曾经用于递归的虚拟DOM数据结构已经无法满足需要。于是,全新的Fiber架构应运而生。
2、Fiber的含义:
作为架构来说,之前React15的Reconciler采用递归的方式执行,数据保存在递归调用栈中,所以被称为stack Reconciler。React16的Reconciler基于Fiber节点实现,被称为Fiber Reconciler。
作为静态的数据结构来说,每个Fiber节点对应一个React element,保存了该组件的类型(函数组件/类组件/原生组件…)、对应的DOM节点等信息。
作为动态的工作单元来说,每个Fiber节点保存了本次更新中该组件改变的状态、要执行的工作(需要被删除/被插入页面中/被更新…)。
3、Fiber的结构:
1 | function FiberNode( |
举个例子,如下的组件结构:
1 | function App() { |
对应的Fiber树结构如下: