|
|
@ -6,4 +6,6 @@ before Mutation 阶段主要处理三件事情: |
|
|
|
### commitBeforMutationEffectOnFiber(commitBeforeMutationLifeCycles) |
|
|
|
### commitBeforMutationEffectOnFiber(commitBeforeMutationLifeCycles) |
|
|
|
内部会根据 Fiber 的 tag 进入不同的处理逻辑,以 ClassComponents 为例,如果 Fiber 节点上有 Snapshot 的标记,那么会通过 Fiber stateNode 属性取到 ClassComponent 实例执行 getSnapshotBeforeUpdate 这个生命周期函数 |
|
|
|
内部会根据 Fiber 的 tag 进入不同的处理逻辑,以 ClassComponents 为例,如果 Fiber 节点上有 Snapshot 的标记,那么会通过 Fiber stateNode 属性取到 ClassComponent 实例执行 getSnapshotBeforeUpdate 这个生命周期函数 |
|
|
|
|
|
|
|
|
|
|
|
如果一个 Fiber 存在 Passive 标记,以 FunctonComponent 为例,那么它会将 flushPassiveEffects 交给 scheduleCallback 函数以 |
|
|
|
如果一个 Fiber 存在 Passive 标记,以 FunctonComponent 为例,那么它会将 flushPassiveEffects 作为回调函数传递给 scheduleCallback 函数以普通优先级进行调度,flushPassiveEffects 中就是 FunctonComponent 的 useEffect |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
从这里可以看到,整个 commit 阶段是同步执行的,但是 useEffect 的回调函数会传递给 scheduleCallback 函数异步执行,所以 useEffect 回调是在 commit 阶段结束之后以异步优先级进行执行 |