commit阶段的次要工作
- 将Render阶段构建的Fiber树、Effect链表(有副作用的Fiber)渲染成正式DOM
- commit阶段分三个局部,beforeMutation、Mutation、layout这三个阶段
- beforeMutation
源码中commit阶段的入口函数:
// react-reconciler/src/ReactFiberWorkLoop.old.jscommitRoot(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指针替换图示