共计 701 个字符,预计需要花费 2 分钟才能阅读完成。
commit 阶段的次要工作
- 将 Render 阶段构建的 Fiber 树、Effect 链表 (有副作用的 Fiber) 渲染成正式 DOM
- commit 阶段分三个局部,beforeMutation、Mutation、layout 这三个阶段
- beforeMutation
-
源码中 commit 阶段的入口函数:
// react-reconciler/src/ReactFiberWorkLoop.old.js commitRoot(root)函数
commitRoot(root)函数产生了什么
- commitRoot(root)函数中最次要的执行内容是:
commitRootImpl(root, previousUpdateLanePriority);
-
commitRootImpl 函数中能够看到 commit 阶段三个局部的执行函数
- beforeMutation 阶段:
commitBeforeMutationEffects(root, finishedWork,);
- Mutation 阶段:
commitMutationEffects(root, finishedWork, lanes);
- layout 阶段:
commitLayoutEffects(finishedWork, root, lanes);
- beforeMutation 阶段:
- React 双缓存机制,current 指针替换,指向构建的 workInProgress。
- 对于 Hook 组件和 class 组件,在 commit 阶段中会依据组件不同的 tag 值执行不同的内容,class 组件的生命周期也会相应的执行,如和 beforeMutation 阶段的会执行 class 组件的
getSnapShotBeforeUpdate 生命周期
- current 指针替换图示
正文完
发表至: javascript
2021-06-02