From e4f4aea0938ee4da3d3d3fd6e986b9d6fb85b5dd Mon Sep 17 00:00:00 2001 From: YuJian Date: Fri, 22 Apr 2022 16:58:54 +0800 Subject: [PATCH] vault backup: 2022-04-22 16:58:54 --- .../React 的深入探索 - commitBeforeMutationEffect.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/React 的源码深入/React 的流程解析 - commit 阶段/React 的深入探索 - commitBeforeMutationEffect.md b/React 的源码深入/React 的流程解析 - commit 阶段/React 的深入探索 - commitBeforeMutationEffect.md index 616b253..fe69685 100644 --- a/React 的源码深入/React 的流程解析 - commit 阶段/React 的深入探索 - commitBeforeMutationEffect.md +++ b/React 的源码深入/React 的流程解析 - commit 阶段/React 的深入探索 - commitBeforeMutationEffect.md @@ -6,4 +6,6 @@ before Mutation 阶段主要处理三件事情: ### commitBeforMutationEffectOnFiber(commitBeforeMutationLifeCycles) 内部会根据 Fiber 的 tag 进入不同的处理逻辑,以 ClassComponents 为例,如果 Fiber 节点上有 Snapshot 的标记,那么会通过 Fiber stateNode 属性取到 ClassComponent 实例执行 getSnapshotBeforeUpdate 这个生命周期函数 -如果一个 Fiber 存在 Passive 标记,以 FunctonComponent 为例,那么它会将 flushPassiveEffects 交给 scheduleCallback 函数以 \ No newline at end of file +如果一个 Fiber 存在 Passive 标记,以 FunctonComponent 为例,那么它会将 flushPassiveEffects 作为回调函数传递给 scheduleCallback 函数以普通优先级进行调度,flushPassiveEffects 中就是 FunctonComponent 的 useEffect + +从这里可以看到,整个 commit 阶段是同步执行的,但是 useEffect 的回调函数会传递给 scheduleCallback 函数异步执行,所以 useEffect 回调是在 commit 阶段结束之后以异步优先级进行执行 \ No newline at end of file