面试官:说说你对react生命周期的理解
hello,这里是潇晨,今天我们来看下react
生命周期在各个阶段是怎样执行的,在面试的过程中有没有遇到这个问题呢,大家也可以学习往期react
源码体系文章哦,往期文章目录在文章结尾。
在之前的react
源码介绍中,我们可以将应用的渲染过程分为mount
阶段(应用首次渲染)和update
阶段(应用状态更新),无论在mount
阶段还是update
阶段,都会经历两个子阶段,一个是render
阶段,一个是commit
阶段。
mount
时:- 在
render
阶段会根据jsx
对象构建新的workInProgressFiber
树,不太了解Fiber
双缓存的可以查看往期文章 Fiber架构,然后将相应的fiber
节点标记为Placement
,表示这个fiber
节点需要被插入到dom
树中,然后会这些带有副作用的fiber
节点加入一条叫做Effect List
的链表中。 - 在
commit
阶段会遍历render
阶段形成的Effect List
,执行链表上相应fiber
节点的副作用,比如Placement
插入,或者执行Passive
(useEffect
的副作用)。将这些副作用应用到真实节点上
- 在
update
时:- 在
render
阶段会根据最新状态的jsx
对象对比current Fiber
,再构建新的workInProgressFiber
树,这个对比的过程就是
- 在