react-debugger-1

Posted lin-fighting

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了react-debugger-1相关的知识,希望对你有一定的参考价值。

整体流程图概览

从ReactDOM.createRoot到beginWork


createRoot会创建FiberRoot和rootFiber,并且初始化fiber.updateQueue
然后到了render

从render开始,创建update,插入updateQueue,开始调度,判断是否同步,执行对应的performSyncWorkOnRoot/performConcurrentWorkOnRoot开启render阶段。

ReactDOM.render到render阶段的流程

同样的场景FiberRoot和rootFiber,然后调用ensureRootIsScheduled,跟concurrent mode一样,进入调度。

render阶段和commit阶段的连接

  • render阶段是在内存中执行的,commit阶段是同步的,也就是,render阶段需要完成所有fiber的操作,才能交给commit阶段一次性完成渲染。那么
  • 如上,我们知道,ReactDOM.render 到最后调用performSyncWorkOnRoot
  • React.createRoot().render(),到最后调用performConcurrentWorkOnRoot。
  • 对于performSyncWorkOnRoot,

    renderRootSync最终会通过while循环,将所有工作处理后,执行commitRoot开启commit阶段
  • 对于performConcurrentWorkOnRoot

    renderRootConcurrent会通过while循环和shouldYield搭配,处理完所有需要处理的fiber之后,才会执行commitRoot,开启commit阶段。

由上图可以看出,render阶段是可以中断的,而commit阶段是不可中断的。

render阶段的流程图

以上是关于react-debugger-1的主要内容,如果未能解决你的问题,请参考以下文章

Java堆外内存的使用

输入非假,也就是真

为啥示例不编译,也就是(co-,contra-和in-)方差如何工作?

为啥示例不编译,也就是(co-、contra-和in-)方差如何工作?

saltStack 配置管理(也就是替换文件)

折半算法,也就是二分查找法