From 839a2f1dcf73e4fbe0049a86723d9b87d129e172 Mon Sep 17 00:00:00 2001 From: YuJian Date: Fri, 22 Apr 2022 11:36:08 +0800 Subject: [PATCH] vault backup: 2022-04-22 11:36:08 --- 自顶向下学 React 源码/React 源码的碎片记录.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/自顶向下学 React 源码/React 源码的碎片记录.md b/自顶向下学 React 源码/React 源码的碎片记录.md index 7b054a9..3ef0ed4 100644 --- a/自顶向下学 React 源码/React 源码的碎片记录.md +++ b/自顶向下学 React 源码/React 源码的碎片记录.md @@ -35,4 +35,6 @@ - 在 commit 节点遍历 effectList 的操作叫做 mutation - ClassComponent 的 getSnapshotBeforeUpdate 生命周期是在 before mutation 阶段被调用的 - useEffect 的回调函数会在 before mutation 阶段会以普通优先级被调度,然后在 commit 阶段执行完毕之后再异步执行 -- commit 阶段开始于 commitRoot 函数,这个函数内部会执行 runWithPriority 函数,该函数接收两个参数,第一个是调度的优先级,第二个是调度的回调函数,在这个函数中触发的任务调度都会以第一个参数传递的优先级执行 \ No newline at end of file +- commit 阶段开始于 commitRoot 函数,这个函数内部会执行 runWithPriority 函数,该函数接收两个参数,第一个是调度的优先级,第二个是调度的回调函数,在这个函数中触发的任务调度都会以第一个参数传递的优先级执行 +- 如果一个 FunctionComponent 内部有需要执行的 useEffect ,那么这个 FunctionComponent 的 Fiber 节点就会被打上 PassiveEffect 的 effectTag +- commitRootImpl 函数开头的 do..while 循环是为了判断当前 Fiber 是否还有还未执行的 useEffect,如果有会再次执行 flushPassiveEffect 函数 \ No newline at end of file