提交 root
主要任务是把之前记录好的更新操作反映到真实 dom 上,并且这个过程是不能中断的。
- 1.检查 finishedWork 是否也有 effect,如果有插入 effect 链表中
3.1 commitBeforeMutationLifecycles
第一次遍历 effect 链,更新 class 组件实例上的 state,props,执行 getSnapshotBeforeUpdate 生命周期
3.2 commitAllHostEffects
- 3.第二次遍历 effect 链,不同的 effectTag,执行不同的操作,比如重置文本节点,执行 插入、更新、删除等的 effect 链,真正的对 dom 进行修改。
3.3 commitAllLifeCycles
- 4.第三次遍历 effect 链,这次遍历就是做一些收尾工作。执行 componentDidMount、componentDidUpdate,更新的回调函数等。
- 5.做一些 还原变量 等的收尾工作。