1
0
Fork 0
Browse Source

vault backup: 2022-04-22 16:58:54

master
YuJian 3 years ago
parent
commit
e4f4aea093
  1. 4
      React 的源码深入/React 的流程解析 - commit 阶段/React 的深入探索 - commitBeforeMutationEffect.md

4
React 的源码深入/React 的流程解析 - commit 阶段/React 的深入探索 - commitBeforeMutationEffect.md

@ -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 阶段结束之后以异步优先级进行执行
Loading…
Cancel
Save