1
0
Fork 0
Obsidian 管理的个人笔记仓库
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

1.0 KiB

commitRootImpl 是 React commit 阶段非常重要的一个函数,这个阶段完成了对 effectList 的遍历和页面渲染,这个函数处理可以分为三个阶段,分别是:before、mutation 和 layout

进入 commitRootImpl 函数,首先会进入 do..while 循环内执行 flushPassiveEffects,直到 rootWithPendingPassiveEffects 不等于 null 才会跳出循环

flushPassiveEffects

这个函数在 useEffect 和 useLayoutEffect 阶段会用到; TODO

flushRenderPhaseStrictModeWarningsInDEV

从名字可以看出是开发环境相关的函数,似乎是针对 Strict 模式;TODO

markCommitStarted

markCommitStopped

重置 root 也就是全局唯一根节点 FiberRootNode 的 finishedWork 和 finishedLanes 重置 root 也就是全局唯一根节点 FiberRootNode 的 callbackNode 和 callbackPriority

mergeLanes

markRootFinished

如果 FiberRootNode 和 workInProgressRoot 相等,重置 workInProgressRoot 、workInProgress 和 workInProgressRootRenderLanes,这里没有看懂