React 中虚拟DOM是什么,为什么需要它?

news2024/11/27 7:34:07

注意:本节主要讲React中的虚拟DOM,但是虚拟DOM并不是React中特有的内容。

1. React 中虚拟 DOM是什么?

虚拟DOM是对真实DOM的描述,虚拟DOM是JS对象,实际上就是 JSX 通过 babel 转换成 React.createElement(),然后这个函数执行后变成的 JS 对象。关于JSX的介绍可以参考我的这篇文章 JSX 代码是如何成为 DOM 的?。

2. React 中虚拟DOM是如何工作的?

虚拟DOM在组件挂载和更新阶段都会出现,工作流程如下:

  • 挂载阶段:React 将结合 JSX 的描述,构建出虚拟 DOM 树,然后通过 ReactDOM.render 实现虚拟 DOM 到真实 DOM 的映射。

  • 更新阶段:页面的变化在作用于真实 DOM 之前,会先作用于虚拟 DOM,虚拟 DOM 将在 JS 层借助算法先对比出具体有哪些真实 DOM 需要被改变,然后再将这些改变作用于真实 DOM。

3. React 中为什么需要虚拟DOM?

使用虚拟DOM主要有下面三方面的优势:

  1. 提升性能

    传统的web开发中都是直接操作真实DOM来更新页面,这些操作非常消耗性能,特别是在数据频繁变化的情况下。

  2. 提高开发效率

    手动操作DOM非常麻烦而且容易出错,通过使用虚拟 DOM可以将更新逻辑抽象为对虚拟DOM的操作,也就是对JS对象的操作。

  3. 跨平台兼容性

    虚拟 DOM 是对真实渲染内容的一层抽象。若没有这一层抽象,那么视图层将和渲染平台紧密耦合在一起,为了描述同样的视图内容,你可能要分别在 Web 端和 Native 端写完全不同的两套甚至多套代码。但现在中间多了一层描述性的虚拟 DOM,它描述的东西可以是真实 DOM,也可以是iOS 界面、安卓界面、小程序…同一套虚拟 DOM,可以对接不同平台的渲染逻辑,从而实现“一次编码,多端运行”,如下图所示。

完,如有不恰当地方欢迎指正。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1291721.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

浴霸市场研究:2023年市场现状及未来发展

据不完全统计,目前我国浴霸行业拥有品牌数量超过250个,市场竞争激烈,主要代表企业有奥普、美的、松桥、松下、澳柯玛、光芒、桑普、来斯奥、飞雕、万家乐等。从未来发展趋势来看,伴随着市场消费升级以及市场需求多元化发展&#x…

道可云专业文旅元宇宙平台整体解决方案,打造沉浸体验新场景

值得注意的是,随着“互联网”时代的到来,元宇宙技术正逐渐成为未来数字经济核心之一。《“十四五”数字经济发展规划》将互联网新基建、数字产业生态系统、数字文娱与数字创新产业视为重点发展领域,其中元宇宙技术在文旅等旅游发挥了不可替代…

【linux系统编程】编辑器gcc/g++

目录 Linux下的编辑器 介绍: 1,编辑器gcc/g 1-1,系统的编译过程 1-2,预处理过程 1-3,编译过程 1-4,汇编过程 1-5,链接过程 Linux下的编辑器 介绍: Linux系统下可支持很多高…

性能优化三步骤(一)——性能分析

从公众号转载,关注微信公众号掌握更多技术动态 --------------------------------------------------------------- 一、性能分析简介 在完成性能测试之后,需要输出一份性能测试报告,分析系统性能测试的情况。其中测试结果需要包含测试接口的…

Google上架踩坑(最新)

1、目标版本需要大于33 2、平台要求版本>33还需要勾选IDFA广告标识,所以这个也不能忘了 3、打包需要打aab渠道包 4、上传安装包提交之后,如果有报错,再打包需要升版本,不然还会报错 5、2023年11月13号谷歌发的新规定&…

亚马逊自养号测评和真人测评的区别,优劣剖析

大家都知道亚马逊的review对产品listing曝光和流量是有很大影响,但是亚马逊的review又不是那么容易获取的,再加上亚马逊平台风控的不断严苛,所以卖家们想尽办法打造爆款listing是每个亚马逊卖家共同的目标,尤其是当旺季到来时&…

记账中心二开

系统预设了 这几种 FSubSystem 为子系统 T_VC_SubSystem 卡片显示的表 字段 FNeedRalteAccount 设置为1的话 ,需要与总账连用系统将去查找 系统状态控制表。 如果系统状态 没有配置这个子系统 将无法显示数据 select sysStaCtr.fid from T_BD_SystemStatusCt…

销售技巧培训之如何提升销售沟通技巧

销售技巧培训之如何提升销售沟通技巧 现在市场环境竞争越来越激烈,产品越来越过剩,如何把产品卖出去是摆在企业面前的难题。所以打造一致所向披靡的销售团队,提升销售人员的系统化销售能力就显得非常重要。在销售系统培训模块中,…

圆通单号查询,圆通速递物流查询,对需要的单号进行颜色标记

批量查询圆通速递单号的物流信息,并对需要的单号进行颜色标记。 所需工具: 一个【快递批量查询高手】软件 圆通速递单号若干 操作步骤: 步骤1:运行【快递批量查询高手】软件,第一次使用的伙伴记得先注册&#xff0c…

Pandas教程09:DataFrame数据可视化绘制折线图、柱状图、散点图、直方图等

pandas.plot() 是 pandas 库中的一个非常方便的函数,用于绘制各种图形,例如线图、柱状图、散点图等。以下是一些示例用法: 1.绘制一个简单的线图: # Author : 小红牛 # 微信公众号:wdPython import pandas as pd impo…

Kali Linux 2023.4 已经发布了!

开发人员推出了 Kali Linux 2023.4,这是2023 年发行版的第四个也是最后一个版本。 新产品已经可供下载,包含15 个新工具和 GNOME 45。 Offective Security 团队报告称,在今年的最终版本中,操作系统中并没有添加太多新功能&…

【三维重建】多频外差相位展开(C++实现)

在结构光三维重建中,通过相移法求解出来的相位是包裹相位(在 [-π/2,π/2] 间成周期性 ) 我们想要用相位找到相机与投影仪间的对应像素,就需要进行相位展开,确保每一行的相位值是唯一的。 多频外差是相位…

新版idea创建maven项目时的下载问题

新版idea创建时没有一个直接的maven选项 而是一个Maven Archetype选项&#xff0c;我们只需要选择它也是一样的&#xff0c;后面跟着选就行 配置国内下载源的方法如下&#xff1a; 1. 2. 3. 代码&#xff1a; <mirror> <id>alimaven</id> <name>al…

什么是SPA(Single Page Application)?它的优点和缺点是什么?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

K8s中安装calico一直无法启动成功

问题描述 #k8s版本为v1.20.9查看对应日志 #calico-node-xxx 对应pod名称 kubectl logs calico-node-xxxx -n kube-system #没有错误但是一直启动不起来应该是版本不匹配问题解决方案 删除 calico重新安装对应版本删除podskubectl delete -f calico.yaml删除文件 rm -f calico.…

汽车服务行业分析:预计2028年将达到38亿元

在推进加快检验机构建设同时&#xff0c;综合评估检验机构数量、分布和检测能力&#xff0c;探索试点汽车 4S 店开展检验&#xff0c;提供维修、保养、车检一体化服务。汽车服务主要是指围绕汽车展开的一系列服务活动&#xff0c;包括维修、美容、金融等&#xff0c;除具有一般…

如何在Spring Boot中优雅地重试调用第三方API?

文章目录 1. 引言2. 重试机制的必要性3. Spring Retry简介4. Spring Boot中使用Spring Retry实现重试4.1 添加依赖4.2 配置重试策略4.2.1 代码示例 4.3 降级处理4.3.1 代码示例 5. 异步重试5.1 异步方法的重试5.1.1 代码示例 5.2 异步方法的降级处理5.2.1 代码示例 6. 异常分类…

新能源工业园污水处理有哪些工艺设备

新能源工业园是推动可持续发展的重要一环&#xff0c;而污水处理是确保工业园区环境健康的关键步骤。在新能源工业园的污水处理过程中&#xff0c;常用的工艺设备主要包括&#xff1a; 1. 预处理设备&#xff1a;预处理设备主要用于去除进入污水处理系统的大颗粒物质&#xff0…

技术培训邀请函|云时代数据安全建设和实践

在数字化变革时代&#xff0c;云计算渗透到各个行业和领域中&#xff0c;赋能业务创新发展&#xff0c;但机遇与挑战并存。数据作为战略性资产和核心生产要素&#xff0c;在混合多云环境面临着日益严峻的安全风险和越来越多的合规要求。如何实现有效的数据安全保护&#xff0c;…

在 Windows 桌面的redis中远程连接到 VMware 中运行的 Linux 上的 Redis

先修改一下docker容器中的redis(一会连上之后看效果) 我使用的是VMware的虚拟机 选择的网络设置为桥接模式 查到虚拟机独立的ip是如下 允许 Linux 虚拟机上的 Redis 监听外部连接&#xff1a; 打开 Linux 虚拟机上的 Redis 配置文件。在大多数系统上&#xff0c;配置文件位于…