react渲染分为render阶段 和commit阶段
本节我们讲解commit阶段
接上一节。我们打开调试项目,npm start后打开控制台
我们的页面结构如下:
这里点击p标签更新num,将会改变code中的数字,以此观察react在页面初始和state更新时,源码的执行情况。
启动项目,进入浏览器,打开控制台 录制performance,可以看到整体函数的调用情况
将函数调用分为两种情况,一个是初始化,一个是更新 红色部分就是render阶段执行的函数,绿色部分为commit阶段执行的函数,打开call tree我们可以看到更直观的函数调用栈,这里我们主要关注commitRoot下的调用栈
初始化
更新
我们可以看到更新和初始化,两者的函数调用栈有所不同,这是因为react18引入了并发 concurrent的概念,这里初始化时,默认为并发模式,函数入口为performConcurrentWorkOnRoot,下面的执行栈也与更新有所不同,而更新时,为同步模式,这里入口为performSyncWorkOnRoot