|
|
|
@ -12,4 +12,4 @@ do {
@@ -12,4 +12,4 @@ do {
|
|
|
|
|
} while (rootWithPendingPassiveEffects !== null); |
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
这个循环的跳出条件是 rootWithPendingPassiveEffects 等于 null,不然就执行 flushPassiveEffects 函数,那么 rootWithPendingPassiveEffects 是什么?为什么要执行 flushPassiveEffects 函数,这个 rootWithPendingPassiveEffects 就是在 completeWork 阶段生成的带有 effectTag 的链表 effectList,而 flushPassiveEffects 函数内部会遍历这个链表, |
|
|
|
|
这个循环的跳出条件是 rootWithPendingPassiveEffects 等于 null,不然就执行 flushPassiveEffects 函数,那么 rootWithPendingPassiveEffects 是什么?为什么要执行 flushPassiveEffects 函数,这个 rootWithPendingPassiveEffects 就是在 completeWork 阶段生成的带有 effectTag 的链表 effectList,而 flushPassiveEffects 函数内部会遍历这个链表,然后执行其各自内部的 useEffect 中的回调函数,在 commitRootImpl 开头执行是因为这些回调函数有可能触发新的渲染,所以需要遍历 |