React基础教程(二):React的基本使用

news2024/11/24 9:35:40

React基础教程(二):React的基本使用

1、HelloReact

1.1 引入react基础依赖包

注意点:①必须要在②之前引入在这里插入图片描述

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

1.2 创建容器

<!--    准备容器-->
<div id="test">

</div>

1.3 创建以及渲染虚拟DOM

<!--此处一定要写babel-->
<script type="text/babel">
    // 1、创建虚拟DOM
    const virtualDOM = <h1>Hello World</h1>; /*此处一定不要写引号,因为不是字符串。这是JSX语法*/
    // 2、渲染虚拟DOM
    ReactDOM.render(virtualDOM, document.getElementById("test"));
</script>

1.4 完整代码

这里一定不能写引号"",
错误写法:const virtualDOM = “<h1>Hello World</h1>”;
正确写法:const virtualDOM = <h1>Hello World</h1>;

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Hello React</title>
    <!--    引入react核心库-->
    <script src="../js/react.development.js"></script>
    <!--    引入react-dom,用于支持react操作dom-->
    <script src="../js/react-dom.development.js"></script>
    <!--    引入babel,用于将jsx转为js-->
    <script src="../js/babel.min.js"></script>
</head>
<body>
<!--    准备容器-->
<div id="test">

</div>
<!--此处一定要写babel-->
<script type="text/babel">
    // 1、创建虚拟DOM
    const virtualDOM = <h1>Hello World</h1>; /*此处一定不要写引号,因为不是字符串。这是JSX语法*/
    // 2、渲染虚拟DOM
    ReactDOM.render(virtualDOM, document.getElementById("test"));
</script>
</body>
</html>

1.5 显示效果

在这里插入图片描述

2、创建虚拟DOM的两种方式

2.1 使用JSX创建虚拟DOM

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Hello React</title>
    <!--    引入react核心库-->
    <script src="../js/react.development.js"></script>
    <!--    引入react-dom,用于支持react操作dom-->
    <script src="../js/react-dom.development.js"></script>
    <!--    引入babel,用于将jsx转为js-->
    <script src="../js/babel.min.js"></script>
</head>
<body>
<!--    准备容器-->
<div id="test">

</div>
<!--此处一定要写babel-->
<script type="text/babel">
    // 1、创建虚拟DOM
    const virtualDOM = <h1 id={'title'}><span>Hello React</span></h1>; /*此处一定不要写引号,因为不是字符串。这是JSX语法*/
    // 2、渲染虚拟DOM
    ReactDOM.render(virtualDOM, document.getElementById("test"));
</script>
</body>
</html>

2.2 使用JS创建虚拟DOM(一般不用

但是当想用JS实现上述JSX实现的代码的时候,就十分麻烦,因为还要用React.createElement创建一个span标签。这就体现了为什么React用jsx语法书写

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Hello React</title>
    <!--    引入react核心库-->
    <script src="../js/react.development.js"></script>
    <!--    引入react-dom,用于支持react操作dom-->
    <script src="../js/react-dom.development.js"></script>
    <!--    引入babel,用于将jsx转为js-->
    <!--  <script src="../js/babel.min.js"></script>-->
</head><!---->
<body>
<!--    准备容器-->
<div id="test">

</div>
<!--此处一定要写babel-->
<script type="text/javascript">
    // 1、创建虚拟DOM
    const virtualDOM = React.createElement('h1', {id: 'title'}, 'Hello React!')
    // 2、渲染虚拟DOM
    ReactDOM.render(virtualDOM, document.getElementById("test"));
</script>
</body>
</html>

所以,纯JS方式一般不用

3、虚拟DOM与真实DOM

本质是Object类型的对象(一般对象)

在这里插入图片描述

虚拟DOM比较“轻”,真实DOM比较“重”。因为虚拟DOM是React内部使用,无需真实DOM上那么多属性。(见下图)

在这里插入图片描述

虚拟DOM最终会被转化为真实DOM,呈现在页面上。

代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Hello React</title>
    <!--    引入react核心库-->
    <script src="../js/react.development.js"></script>
    <!--    引入react-dom,用于支持react操作dom-->
    <script src="../js/react-dom.development.js"></script>
    <!--    引入babel,用于将jsx转为js-->
    <script src="../js/babel.min.js"></script>
</head>
<body>
<!--    准备容器-->
<div id="test">

</div>

<div id="demo">

</div>
<!--此处一定要写babel-->
<script type="text/babel">
    // 1、创建虚拟DOM
    const virtualDOM = (
        <h1 id={'title'}>
            <span>Hello React</span>
        </h1>); /*此处一定不要写引号,因为不是字符串。这是JSX语法*/
    // 2、渲染虚拟DOM
    ReactDOM.render(virtualDOM, document.getElementById("test"));

    console.log("虚拟DOM=", virtualDOM);
    console.log(typeof virtualDOM);
    console.log(virtualDOM instanceof Object);

    const trueDOM = document.getElementById('demo');
    console.log('真实DOM=', trueDOM);

    // debugger;
</script>
</body>
</html>

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

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

相关文章

毕业论文里引用文献率为0%的解决小技巧

快要毕业了&#xff0c;带着伤感&#xff0c;大学生们已开始加紧完成论文的编写和毕业答辩&#xff0c;祝大家都可以顺利拿到学位证书和毕业证书。 前两天&#xff0c;有位同学找我&#xff0c;咨询如何解决毕业论文里&#xff0c;引用文献率为0%的问题。 我在知网上将该论文通…

flutter创建、安装扩展包、打包apk

1、创建APK项目 要在VSCode中创建一个Flutter应用程序&#xff0c;请按照以下步骤进行操作&#xff1a; 安装Flutter SDK&#xff1a;请确保你已经安装了Flutter SDK&#xff0c;并配置了Flutter的环境。你可以在Flutter的官方网站上找到安装和设置Flutter的详细说明。 安装V…

完美解决 RabbitMQ 可视化界面中 Overview 不显示图形的问题

&#x1f4a7; 记录一下今天遇到的 b u g \color{#FF1493}{记录一下今天遇到的bug} 记录一下今天遇到的bug&#x1f4a7; &#x1f337; 仰望天空&#xff0c;妳我亦是行人.✨ &#x1f984; 个人主页——微风撞见云的博客&#x1f390; &#x1f433; 数据结构与算法…

VBA基础(宏编程)

VBA介绍&#xff1a; Visual Basic for Applications&#xff08;VBA&#xff09;是 VisualBasic 的一种宏语言&#xff0c;是微软开发出来在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。主要能用来扩展 Windows 的应用程序功能&#xff0c;特别是Microsoft Office…

DolphinDB +机器学习,预测地震波形数据

1. 地震波形数据预测业务场景说明 在地震波形数据异常检测场景中&#xff0c;通常需要使用多种工具和方法来提高检测精度和鲁棒性。其中&#xff0c;FilterPicker 是一种常用的基于模板匹配的异常检测工具&#xff0c;可以实现地震波形数据的实时异常检测和定位。FilterPicker…

为什么看了那么多测试技术帖,自己都没有提升?

作为测试新手&#xff0c;最爱莫过于看各大牛发的技术贴&#xff0c;这篇很牛叉&#xff0c;那篇也很有道理&#xff0c;似乎自己看着看着也会成为高手。然而几年后&#xff0c;发现自己对专业知识的理解乱的很&#xff0c;里面更有很多自相矛盾的地方&#xff0c;这到底是哪里…

RedisSon高并发分布式锁实战

Redis高并发分布式锁实战 1.分布式场景下的synchronized失效的问题–用redis实现分布式锁 synchronized是通过monitor实现的jvm级别的锁&#xff0c;如果是分布式系统&#xff0c;跑在不同的虚拟机上的tomcat上&#xff0c;会导致synchronized无法锁住对象 ----------- 需要分…

01分数规划 易懂+例题讲解 (c++)

01分数规划 &#xff1a;01即取还是不取&#xff0c;分数即所求型式为&#xff0c;规划就是选取最好的方案。 一般情况题目给出n个物品&#xff0c;再给出每个物品的价值以及物重&#xff0c;选取k个物品&#xff0c;问你在所有可能选取的方案中&#xff0c;最大的单位价值为多…

通过零代码ETLCloud实现马帮ERP数据自动化同步

马帮ERP介绍 马帮ERP是一款云端跨境电商管理软件。与传统的ERP系统不同&#xff0c;马帮ERP专注于跨境电商领域&#xff0c;为电商企业提供一站式管理解决方案&#xff0c;包括财务管理、采购管理、进销存管理、订单管理等功能模块。该平台针对跨境电商行业特点&#xff0c;提…

MM32F3273G8P火龙果开发板MindSDK开发教程20 - freertos + letter shell 的移植

MM32F3273G8P火龙果开发板MindSDK开发教程20 - freertos letter shell 的移植 1、freertos下载 官网传送门 2、freertos移植 1、在工程目录device下新建freertos目录&#xff0c;将下载的源码source目录下的七个.c文件copy到新建的freertos目录。 2、将source/protable/G…

Word 2021入门指南:详细解读常用功能

软件安装&#xff1a;办公神器office2021安装教程&#xff0c;让你快速上手_正经人_____的博客-CSDN博客 一、 新建文档 打开Word 2021后&#xff0c;可以看到左上角的“文件”选项&#xff0c;点击它&#xff0c;在弹出的菜单中选择“新建”选项。然后可以选择空白文档或者使…

vue3+ts+vite+element plus中使用luckysheet(预览效果)

前言&#xff1a; 这两天一个项目&#xff0c;需要在页面中以excel的形式展示大量数据&#xff0c;喜欢偷懒的我果断扒拉了一堆适用于vue3的插件&#xff0c;下面简单说说我使用的luckysheet 使用&#xff1a; 一、准备一个vue3tsviteelement plus的项目 此处省略n个字。。。…

如何用 WampServer+快解析 搭建php文件管理器

基于网络&#xff0c;资源是大家最最基本的需求&#xff0c;许多网络爱好者不求利益&#xff0c;把自己收集的一些通过一些平台共享给大家&#xff0c;这就是资源共享。 资源共享程度越高&#xff0c;代表信息发展水平越高。现实工作中&#xff0c;由于用户提供的数据可能来自…

Linux基础IO - 软硬链接 | 动静态库

之前的文章中我们讲述了软硬链接中有关软连接的知识&#xff0c;本文中将继续讲述硬链接部分的知识&#xff0c;并且讲述一下动静态库的相关内容。 硬链接 硬链接本质上就是在当前目录建立一个新的文件名与指定文件inode的关系。 每当我们在当前目录下建立一个硬链接就会让文…

C++11多线程之条件变量

文章目录 一、关于多线程的同步二、初始条件变量三、关于条件变量的例题四、生产者消费者模型 一、关于多线程的同步 //函数被调用&#xff0c;分配相应的栈帧&#xff0c;进行现场保护void func(char c) {char filename[20] {};sprintf(filename, "test%c.txt",c)…

Fiddler Response私人订制

在客户端接口的测试中&#xff0c;我们经常会需要模拟各种返回状态或者特定的返回值&#xff0c;常见的是用Fiddler模拟各种请求返回值场景&#xff0c;如重定向AutoResponder、请求拦截修改再下发等等。小编在近期的测试中遇到的一些特殊的请求返回模拟的测试场景&#xff0c;…

《变形金刚7》票房大跳水!特效敷衍?剧情单薄?汽车人的未来在哪里?

《变形金刚&#xff1a;超能勇士崛起》 6.11&#xff08;上映第3天&#xff09; 单日票房8200万 6.12&#xff08;上映第4天&#xff09; 单日票房2173万 6.13&#xff08;上映第5天&#xff09; 单日票房1700万 说实在的&#xff0c;真没想到《变形金刚7》日票房会如此大幅…

高压放大器在铁电材料中的应用研究

铁电材料是一种具有特殊磁电性能的材料&#xff0c;包括压电陶瓷、磷酸铁钠陶瓷、氧化锌压电陶瓷等。这些材料在电力、电子、机械等领域有广泛的应用&#xff0c;如超声波发生器、声纳、压力传感等。其中&#xff0c;高压放大器在铁电材料中有着重要的应用。 一、高压放大器的基…

完美搭建一个vue3+ts项目(一篇文章搞定你的所有疑惑)

目录 一、创建vite项目 二、启动vite项目 三、处理一些配置问题 四、增加工程化插件 1、安装sass 2、安装vue-router 3、安装pinia 4、安装element-plus 5、安装axios 6、设置路径别名&#xff0c;将相对路径改为绝对路径 一、创建vite项目 1、在一个文件夹下通…

Vision Pro:为什么空间音频是AR的绝杀武器?

Apple Vision Pro&#xff0c;不仅仅是苹果全新的重磅品类&#xff0c;而且在它身上也融合了苹果过去几乎所有新技术&#xff0c;比如空间音频就是其中一个例子。 苹果表示&#xff0c;Vision Pro中空间音频可以很好的应用在&#xff1a;影视节目、游戏内容、3D空间照片、3D空…