• react06-jsx渲染机制


    react06-jsx渲染机制

    react.createElemnet() ==》 构建虚拟dom

    构建视图的具体流程 :

    • 将jsx语法,编译为虚拟dom对象 ,根据react中的处理生成virtualDom ,这是react自己内部构建的一套对象体系,基于jsx中的属性描述构建成视图中真实DOM的相关描述,具体通过 React.createElement(type , props , children)
    • 将虚拟dom构建成真实dom
    • 补充: 第一次渲染是直接从虚拟dom----> 真实dom,之后的每次视图更新都是根据diff比对进行计算,生成两次的差异部分的PATH布丁包

    在这里插入图片描述

    在https://babeljs.io中看一下具体的编译后结果 在这里插入图片描述
    将右侧编译后的代码在vs code中展示如下: 在这里插入图片描述
    打印出来可以看到 在这里插入图片描述
    在这里插入图片描述

    virtualDOM = {
    $$typeof : Symbol(react.element),
    ref: null,
    key : null ,
    type: 标签名或「组件名」
    props : {
    // 元素的相关属性,className,x,y,title …
    // children : 子节点信息「没有子节点则没有此属性,若只有一个子节点为对象,若有多个子节点则为数组,每个元素为子节点virtualDom对象」
    } ,
    }

    以上是react内部的创建虚拟dom的过程,接下来是通过render方法将virtualDom创建成真实dom,然后浏览器渲染

    react.render() ===> 构建真实dom

    v16 和 v18 语法上有些差异
    v16 : ReactDom.render(<> … , document.getElementById(‘root’))
    v18 : const root = ReactDom.createRoot(document.getElementById(‘root’)) root.render(<>…)

    模拟一下大概的render处理
    在这里插入图片描述

    先封装一个简单的对象遍历方法,方便对节点对象操作在这里插入图片描述

    这是我所了解到的react处理渲染大致流程,如有遗漏,欢迎补充交流

  • 相关阅读:
    如何选择合适的自动化测试工具?
    数据结构 | 图
    服务器前后端学习理解
    队列的基本操作(C语言实现)
    【软考 系统架构设计师】项目管理④ 软件质量管理
    软件第三方测评机构简析:良好的测试环境对软件产品起到的作用
    Hudi查询类型/视图总结
    决策树算法
    史诗级PCL和Eigen联合BUG
    基于STM32+Android的蓝牙语音控制智能家居系统
  • 原文地址:https://blog.csdn.net/yingzi0001/article/details/138033982