当前位置: 首页 > news >正文

React 架构流程概览

React 架构流程概览

文章目录

    • React 架构流程概览
      • 启动React项目
      • 流程分析
        • 各部分解析
          • 调度器
          • 协调器
          • 渲染器
      • 总结


启动React项目

启动项目,并打开 Performance 面板


流程分析

首先找到入口函数
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gs4llhlI-1678591505665)(/Users/abby/Library/Application Support/typora-user-images/image-20230312102802774.png)]
整个 render 下面的调用栈就是首屏渲染要执行的流程。

render 过程大致分为三部分:分别对应 调度器、协调器、渲染器:
在这里插入图片描述

各部分解析

调度器

第一部分:
在这里插入图片描述
调度器:创建整个应用根节点fiberRootNode和当前应用根节点 rootFiber,接下来就会进入首屏渲染。


协调器

进入首屏渲染,开始创建 workInProgress Fiber 树。
创建 workInProgress 的流程类似于递归过程,分为递阶段(beginWork)和归阶段(completeWork)
在这里插入图片描述

整个 renderRootSync 方法的执行就是 协调器的执行过程


渲染器

渲染器的工作是:将变化的节点渲染到视图上

渲染器:又称为 commit 阶段,分为三个子阶段:渲染到视图之前,渲染到视图中,渲染到视图后
在这里插入图片描述


总结

  • 调度器:创建整个应用根节点fiberRootNode和当前应用根节点 rootFiber,接下来就会进入首屏渲染。
  • 协调器 :render 阶段(递与归)
  • 渲染器:commit 阶段,分为三个阶段:渲染到视图之前,渲染到视图中,渲染到视图后
  • 创建 workInProgressFiber 的流程也类比为递归的过程,也分为 递阶段和归阶段,递阶段就是执行的 beginWork,归阶段就是执行的 completeWork
  • renderRootSync 函数执行的过程就是协调器的执行,协调器的执行被称为 render 阶段,render 阶段开始于 renderRootSync 函数(commitRoot 是渲染器需要执行的函数)
  • render 阶段使用遍历来实现了可中断的递归,其中递归可以分为 递阶段和归 阶段
  • render 阶段不会执行具体的 DOM 操作,具体的 DOM 操作是在 commit 阶段执行的,render 阶段 要做的就是为需要的节点打上标记(deletion或者placement)
  • render 阶段就是 采用深度优先遍历的方式,依次执行 fiber 节点的 beginwork 和 completework

PS:

  1. React 版本是17版本
  2. 工具:控制面板的 Performance
http://www.lryc.cn/news/40150.html

相关文章:

  • 【Linux】进程管理之kill、killall、pkill
  • LSTM从入门到精通(形象的图解,详细的代码和注释,完美的数学推导过程)
  • 19.特殊工具与技术
  • 518. 零钱兑换 II ——【Leetcode每日一题】
  • django DRF请求访问频率限制
  • 二分查找创新性总结
  • Java Web 实战 13 - 多线程进阶之 synchronized 原理以及 JUC 问题
  • 【解决】elementui ——tooltip提示在循环中点击一个,同时显示多个的问题!
  • SpringBoot-核心技术篇
  • 2023还有人不知道kubernetes?| 初步理解kubernetes
  • Docker 环境搭建
  • css实现炫酷充电动画
  • 【Effective C++详细总结】第二章 构造/析构/赋值运算
  • webpack基础
  • jQuery《一篇搞定》
  • Spring Cloud学习笔记【负载均衡-Ribbon】
  • 第九章:C语言数据结构与算法初阶之堆
  • Mysql架构初识
  • 字符串函数和内存函数
  • Web3中文|GPT-4超越GPT-3.5的五大看点
  • 动态矢量瓦片缓存库方案
  • 628.三个数的最大乘积
  • 【数据结构】堆和集合笔记
  • java LinkedList 源码分析(通俗易懂)
  • Vue中实现路由跳转的三种方式详细分解
  • 全国自学考试03708《中国近现代史纲要》重点复习精要
  • 数据库面试题——锁
  • Python笔记 -- 文件和异常
  • 蓝桥杯刷题冲刺 | 倒计时24天
  • 真正理解微软Windows程序运行机制——什么是消息