React基础入门之虚拟Dom

news2025/1/12 21:57:42

React官方文档:https://react.docschina.org/

说明

重要提示:本系列文章基础篇总结自尚硅谷课程,且采用类式写法!!最新的函数式组件写法见高级篇。

本系列文档旨在帮助vue同学更快速的学习react,如果你很熟悉vue,且想更好地了解react,建议从类式组件学起!

学习本教程之前,最好具备vue的基础知识,明白虚拟DOM、jsx这些前置知识。接下来,我们通过一个简单的示例来展示react的使用。

注意:入门的学习不会使用脚手架,而是使用html非框架写法

入门示例

下面展示一个最简单的react示例

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>hello_react</title>
</head>
<body>
	<!-- 准备好一个“容器” -->
	<div id="test"></div>

	<!-- 引入react核心库 -->
	<script type="text/javascript" src="./js/react.development.js"></script>
	<!-- 引入react-dom,用于支持react操作DOM -->
	<script type="text/javascript" src="./js/react-dom.development.js"></script>
	<!-- 引入babel,用于将jsx转为js -->
	<script type="text/javascript" src="./js/babel.min.js"></script>

	<script type="text/babel" > /* 此处一定要写babel */
		//1.创建虚拟DOM
		const VDOM = <h1>Hello,React</h1> /* 此处一定不要写引号,因为不是字符串 */
		//2.渲染虚拟DOM到页面
		ReactDOM.render(VDOM,document.getElementById('test'))
	</script>
</body>
</html>

运行后的页面

引入的js文件作用

使用非框架的形式写react,我们需要引入三个js文件,如上面的示例:

  1. react.js: React核心库。
  2. react-dom.js: 提供操作DOM的React扩展库。
  3. babel.min.js: 解析JSX语法代码转为JS代码的库。

babel.js的作用

  1. 浏览器不能直接解析JSX代码, 需要babel转译为纯JS的代码才能运行
  2. 只要用了JSX,都要加上type=“text/babel” , 声明需要babel来处理

虚拟DOM

react采用虚拟DOM的形式渲染页面

使用JSX创建虚拟DOM

//1.创建虚拟DOM
const VDOM = <h1>Hello,React</h1>

渲染虚拟DOM(元素)

  1. 语法: ReactDOM.render(virtualDOM, containerDOM)
  2. 作用: 将虚拟DOM元素渲染到页面中的真实容器DOM中显示
  3. 参数说明
参数一: 纯js或jsx创建的虚拟dom对象
参数二: 用来包含虚拟DOM元素的真实dom元素对象(一般是一个div)
const VDOM = <h1>Hello,React</h1> /* 此处一定不要写引号,因为不是字符串 */
//2.渲染虚拟DOM到页面
ReactDOM.render(VDOM,document.getElementById('test'))

注意:react和react-dom的引入顺序不能写错!

创建虚拟DOM的两种方式

纯JS方式

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>2_使用js创建虚拟DOM</title>
</head>
<body>
	<!-- 准备好一个“容器” -->
	<div id="test"></div>

	<!-- 引入react核心库 -->
	<script type="text/javascript" src="../js/react.development.js"></script>
	<!-- 引入react-dom,用于支持react操作DOM -->
	<script type="text/javascript" src="../js/react-dom.development.js"></script>

	<script type="text/javascript" > 
		//1.创建虚拟DOM
		//const VDOM = React.createElement(标签名,标签属性,标签内容)
		const VDOM = React.createElement('h1',{id:'title'},React.createElement('span',{},'Hello,React'))
		//2.渲染虚拟DOM到页面
		ReactDOM.render(VDOM,document.getElementById('test'))
	</script>
</body>
</html>

注:不用将jsx转为js,所以不需要引入babel

不使用jsx创建项目,明显需要写很多代码,非常麻烦!

JSX方式

JSX方式就是js创建虚拟DOM的语法糖

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>1_使用jsx创建虚拟DOM</title>
</head>
<body>
	<!-- 准备好一个“容器” -->
	<div id="test"></div>

	<!-- 引入react核心库 -->
	<script type="text/javascript" src="../js/react.development.js"></script>
	<!-- 引入react-dom,用于支持react操作DOM -->
	<script type="text/javascript" src="../js/react-dom.development.js"></script>
	<!-- 引入babel,用于将jsx转为js -->
	<script type="text/javascript" src="../js/babel.min.js"></script>

	<script type="text/babel" > /* 此处一定要写babel */
		//1.创建虚拟DOM
		const VDOM = (  /* 此处一定不要写引号,因为不是字符串 */
			<h1 id="title">
				<span>Hello,React</span>
			</h1>
		)
		//2.渲染虚拟DOM到页面
		ReactDOM.render(VDOM,document.getElementById('test'))
	</script>
</body>
</html>

注:当Vdom的内容是多行时,可以使用()jsx包裹起来,表示一个整体。

虚拟DOM与真实DOM对比

打印输出虚拟DOM和真实DOM进行比较

<body>
    <!-- 准备好一个“容器” -->
    <div id="test"></div>
    <!-- 引入react核心库 -->
    <script type="text/javascript" src="./js/react.development.js"></script>
    <!-- 引入react-dom,用于支持react操作DOM -->
    <script type="text/javascript" src="./js/react-dom.development.js"></script>
    <!-- 引入babel,用于将jsx转为js -->
    <script type="text/javascript" src="./js/babel.min.js"></script>
    <script type="text/babel">
      /* 此处一定要写babel */
      //1.创建虚拟DOM
      const VDOM = <h1>Hello,React</h1>; /* 此处一定不要写引号,因为不是字符串 */
      //2.渲染虚拟DOM到页面
      ReactDOM.render(VDOM, document.getElementById("test"));
      const TDOM = document.getElementById("test");
      console.log("虚拟DOM", VDOM);
      console.info("真实DOM", TDOM);
    </script>
  </body>

console.log(“虚拟DOM”, VDOM);

看看真实DOM身上有哪些属性

  1. 虚拟DOM本质是Object类型的对象(一般对象)
  2. 虚拟DOM比较 “”,真实DOM比较 “”,因为虚拟DOMReact内部在用,无需真实DOM上那么多的属性
  3. 虚拟DOM最终会被React转化为真实DOM,呈现在页面上

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

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

相关文章

OpenAI推出GPT-3.5Turbo微调功能并更新API;Midjourney更新局部绘制功能

&#x1f989; AI新闻 &#x1f680; OpenAI推出GPT-3.5Turbo微调功能并更新API&#xff0c;将提供GPT-4微调功能 摘要&#xff1a;OpenAI宣布推出GPT-3.5Turbo微调功能&#xff0c;并更新API&#xff0c;使企业和开发者能够定制ChatGPT&#xff0c;达到或超过GPT-4的能力。通…

如何使用装rancher安装k8s集群(k8s集群图形化管理工具)

前言 kubernetes集群的图形化管理工具主要有以下几种&#xff1a; 1、 Kubernetes Dashborad: Kubernetes 官方提供的图形化工具 2、 Rancher: 目前比较主流的企业级kubernetes可视化管理工具 3、各个云厂商Kubernetes集成的管理器 4、 Kuboard: 国产开源Kubernetes可视化管理…

异地容灾备份方式有哪些?异地容灾备份是什么意思

在当今的数字时代&#xff0c;数据已经成为公司的主要资产。然而&#xff0c;数据的丢失或损坏可能会给公司带来巨大的损失。因此&#xff0c;异地容灾备份已成为企业应考虑的因素。本文将详细介绍异地容灾备份的形式&#xff0c;以帮助企业更好地维护其重要数据。 什么是异地…

自定义QGraphcsItem旋转移动缩放组合

简单的记录下学习自定义QGraphicsItem 移动、旋转、缩放、组合。 1. QGraphicsView缩放 通过鼠标滚轮缩放整个视图 重写GraphicsView的wheelEvent(QWheelEvent *event)事件 // //QttGraphicsView::QttGraphicsView(QGraphicsScene* scene, QWidget* parent) : QGraphicsView(s…

经营决策垂直大模型——WinPlan经营大脑9月正式上线

经营决策产品提供商「数利得科技」(以下简称“数利得”)日前获近千万天使轮融资,由耀途资本独家投资。本轮融资资金将用于产品研发和算法模型搭建。 数利得成立于2022年,核心成员出身于阿里旗下钉钉,曾负责财税、业财一体、生态开放等业务,商业化经验丰富。在与众多企业…

如何快速查询京东快递并查询超时状态?

随着电子商务的蓬勃发展&#xff0c;快递成为了我们日常生活中不可或缺的一部分。而在众多快递公司中&#xff0c;京东快递以其高效、可靠的服务赢得了广大用户的青睐。然而&#xff0c;查询京东快递并同时查询快递的超时状态却一直是用户们头痛的问题。今天&#xff0c;我将为…

什么是Nginx HA?

什么是Nginx HA 1.1 什么是Nginx HA?1.2 高可用性的类型1.3 理解Nginx HA 示例1.4为什么高可用性很重要&#xff1f;1.5 高可用是如何实现的&#xff1f;1.6 如何支持高可用性?1.7 最佳实践&#xff1a;高可用性 1.1 什么是Nginx HA? 高可用性(HA) 是指系统通常通过使用内置…

水体测试积分球

水质分析包括观察分析、嗅味分析、仪器分析和化验分析等方法。排除分析过程中的影响因素&#xff0c;确保得到数据的准确性&#xff0c;保证分析质量&#xff0c;让人们深入了解水情况&#xff0c;合理利用水资源。在水质分析化验中&#xff0c;要对样品进行严格的控制&#xf…

DNDC模型---土壤碳储量、温室气体排放、农田减排、土地变化、气候变化中的应用

由于全球变暖、大气中温室气体浓度逐年增加等问题的出现&#xff0c;“双碳”行动特别是碳中和已经在世界范围形成广泛影响。国家领导人在多次重要会议上讲到&#xff0c;要把“双碳”纳入经济社会发展和生态文明建设整体布局。同时&#xff0c;提到要把减污降碳协同增效作为促…

新能源电动汽车有序充电,多场景充电解决方案-安科瑞黄安南

随着我国能源战略发展以及低碳行动的实施&#xff0c;电动汽车已逐步广泛应用&#xff0c;而电动汽车的应用非常符合当今社会对环保意识的要求&#xff0c;以及有效节省化石燃料的消耗。 由于其没有污染排放的优点以及政府部门的关注&#xff0c;电动汽车将成为以后出行的重要…

centos8安装mysql

1.首先用finalShell远程连接到服务器 2.如果服务器之前安装过mysql请先卸载,我这里是用yum安装的&#xff0c;现在通过yum去卸载 yum remove -y mysql find / -name mysql //找到残留的文件&#xff0c;再通过rm -rf去删除对应的文件3.下面正式开始安装 &#xff08;1&#…

【unity小技巧】Unity实现视差效果与无限地图(附git源码)

文章目录 前言下载素材1. 角色素材 环境搭建和人物移动视差效果无限背景源码参考完结 前言 如何提升你的画面感&#xff1f;动态的背景设计可以丰富我们的游戏效果&#xff0c;当你在游戏中行走或奔跑时&#xff0c;你将能够感受到身体在空间中的运动&#xff0c;仿佛真的置身…

成集云 | 抖店连接器客户静默下单催付数据同步钉钉 | 解决方案

源系统成集云目标系统 方案介绍 随着各品牌全渠道铺货&#xff0c;主播在平台上直播时客户下了订单后不能及时付款&#xff0c;第一时间客户收不到提醒&#xff0c;不仅造成了客户付款率下降&#xff0c;更大量消耗了企业的人力成本和经济。而成集云与钉钉深度合作&#xff0…

TouchGFX之DMA2D

Chrom-ART (DMA2D)图形加速器能够传输来自存储器的部分图像数据&#xff0c;并将其放入或先混合后再放入帧缓存。 Chrom-ART可从内部或外部存储器读取数据。 同样&#xff0c;它可以写入内部或外部存储器。 在绘制图形时可使用此功能&#xff0c;以显著提高显示性能&#xff0c…

云计算:探索现代科技的未来之云

文章目录 云计算基本概念云计算是什么注意 云计算的价值云计算的部署模式云计算的服务模式主流的云计算技术AWS简介AWS建立了广阔的合作伙伴生态 VMware简介VMware服务介绍 华为云简介华为云Stack模式 云计算基本概念 云计算是什么 云计算是一种模型&#xff0c;它可以实现随时…

VR全景:助力乡村振兴,实现可持续发展

引言&#xff1a; 随着科技的飞速发展&#xff0c;虚拟现实&#xff08;VR&#xff09;全景技术正在以惊人的速度改变着我们的生活方式和产业格局。全景技术不仅在娱乐、教育等领域取得了巨大成功&#xff0c;也为乡村振兴提供了全新的机遇。通过以乡村为背景的VR全景体验&…

微积分进阶 1.1 函数

一、函数的概念 在观察自然现象或工程实际问题时&#xff0c;我们经常发现有几个变量在变化&#xff0c;这些变量之间并不是彼此孤立的&#xff0c;而是相互制约的&#xff0c;这些变量是怎么变化的呢&#xff1f;它们之间有什么联系呢&#xff1f;存什么规律呢&#xff1f;怎…

设计模式(11)观察者模式

一、概述&#xff1a; 1、定义&#xff1a;观察者模式定义了一种一对多的依赖关系&#xff0c;让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象&#xff0c;使它们能够自动更新自己。 2、结构图&#xff1a; public interface S…

专用R5F+双核A53,异构多核AM64x让工控“更实时”

Cortex-R5F Cortex-A53异构多核&#xff0c; 给工控带来何种意义&#xff1f; 创龙科技SOM-TL64x工业核心板搭载TI AM64x最新工业处理器&#xff0c;因其CortexR5F 双核Cortex-A53异构多核的优良性能&#xff0c;在工业自动化、能源电力、轨道交通等领域广受客户欢迎。目前…

苍穹各种弹出框使用说明

1. 工具栏提示框 工具栏显示提示框&#xff0c;提示框有分绿色、黄色、红色的&#xff0c;代表的意义不一样。一般绿色用来提示用户操作成功&#xff1b;黄色代替这些信息是提醒、警示作用&#xff0c;不会中断用户的操作&#xff1b;而红色则表明系统出现异常。提示框的信息…