jsx转换成react元素
render阶段
为每一个react元素构建对应的fiber对象,在构建fiber对象的过程中,要构建其对应的DOM对象,并且还要为fiber对象添加effectTag属性,就是标注当前fiber对象要对应的DOM操作(增删改),这个新构建的fiber对象称之为workInProgress fiber树,待提交的fiber树,将构建好的workInProgress存储在fiberRoot.finishedWork中,render阶段结束。
commit阶段
先获取到render阶段的结果,即保存在fiberRoot对象中的重新构建的 workInProgress Fiber 树,fiberRoot.finishedWork 根据 Fiber 对象中的 effectTag 属性进行相应的DOM操作。如果存在类组件,调用对应的生命周期函数。如果存在函数组件,调用对应的 useEffect 钩子函数。
第一阶段:before Mutation
对于 Class 组件而言,是执行 getSnapShotBeforeUpdate
生命周期,对于函数式组件则是安排异步回调
第二阶段:Mutation
根据effectTag去分别执行DOM操作(插入或更新DOM节点)
第三阶段:Layout
对于 Class 组件而言:初始阶段是执行 componentDidMount
,更新阶段是执行componentDidUpdate
对于函数式组件则是通过任务队列循环执行 useEffect
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。