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

React怎么创建虚拟dom和挂载到页面

1、🍟你可以直接下载本节配套的资源代码,然后导入vscode看效果,也可以跟着教程一点一点敲,都是没问题的。
2、🤔怎么运行本节代码? 很简单,随便找个浏览器打开index.html即可。💕

代码目录

在这里插入图片描述

运行效果

在这里插入图片描述

在讲React之前呢,我们得先有一个趁手的IDE,虽然现在WebStorm免费了,但是安装和配置起来呢,对电脑的要求还是有一定门槛,所以我们还是使用VSCODE。

除了直接用浏览器打开index.html,我们也可以用vscode的goLive功能,只需要安装一个插件。

要在VSCode中打开浏览器,可以按照以下步骤进行操作:

  1. 安装VSCode插件:首先,打开VSCode,点击左侧的扩展图标(可通过快捷键Ctrl + Shift + X打开)。在搜索栏中输入关键词“Live Server”并选择第一个结果,点击插件右下角的“安装”按钮。
    在这里插入图片描述

  2. 启动Live Server:在安装完成后,点击左下角的“Go Live”图标,再点击“Open Browser”按钮,这样便会自动在默认浏览器中打开你的HTML文件。
    在这里插入图片描述

  3. 更改默认浏览器:如果想要在不同的浏览器中打开文件,可以在VSCode的设置中进行更改。点击左上角的“文件”菜单,选择“首选项”(Preferences),再选择“设置”(Settings)。在搜索框中输入“liveServer.settings.CustomBrowser”并点击结果。选择“编辑设置.json”(Edit in settings.json),然后在打开的文件中添加以下代码:

json “liveServer.settings.CustomBrowser”: “浏览器完整路径” “

在这里,将“浏览器完整路径”替换为你所希望使用的浏览器的完整路径。例如,如果你想要使用Google Chrome,可以填写以下代码:

json “liveServer.settings.CustomBrowser”: “C:/Program Files (x86)/Google/Chrome/Application/chrome.exe” “

  1. 使用自定义快捷键:你还可以为打开浏览器操作添加自定义快捷键。点击左上角的“文件”菜单,选择“首选项”(Preferences),再选择“键盘快捷方式”(Keyboard Shortcuts)。在搜索框中输入“live server”并点击结果。找到“Open Browser”命令,右击并选择“更改键绑定”(Change Keybinding)。然后按下你希望的快捷键,并保存设置。

现在,你就可以使用VSCode打开浏览器来查看你的HTML文件了!

1、聊聊这节课的需求

很简单啦,就是在页面上输出一段话而已。
在这里插入图片描述

2、技术方案

为了降低入门React的难度,我们直接用html的方式,而不是脚手架的方式。
代码非常简单,分为三步。

1、准备好一个容器

<div id="test"></div>

在页面上随便写一个div,这个就是我们要用React渲染的目标区域。

2、引入必要的js文件

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

第一个是React核心库,还记得当年你是怎么学习jQuery的吗,是不是第一步就是引入jQuery啊,然后就可以用$去操作一些DOM元素了。比如,你可以用

$('#test').html('<h1>Hello jQuery</h1>'); 

来实现类似的效果。

那么同样的道理,现在用React了,自然也要引入react。

第二个是React-dom,用来支持dom操作的,用了React了,我们就不需要手动去操作dom了,而是让react帮我们操作,就需要引入这个库。

第三个是babel,我们知道,浏览器早期是不支持ES6的,也不支持import语法,就需要用babel来做转换,转成ES5才能运行代码。但是呢,除了ES6转ES5,babel还有一个作用,就是解析JSX语法。

大家都知道JS,JSX又是什么鬼?简单来说,JSX支持直接在JS文件里面写html代码,主要就是这个作用。

3.创建虚拟dom并渲染到页面

<script type="text/babel"> //1.创建虚拟DOMconst VDOM = <h1>Hello,React</h1>//2.渲染虚拟DOM到页面ReactDOM.render(VDOM, document.getElementById('test'))
</script>

注意,<h1>Hello,React</h1> 这个玩意可不是字符串啊,而是虚拟DOM,是JSX语法构建的虚拟DOM。有人问,为啥不用JS创建虚拟DOM呢,JS不好吗,不香吗?

欸,你还真别说,React是支持这样做的,但是很不推荐,就好比你写一个标签,里面有属性,标签里面还套标签,你用JS写,就很冗余了,还看不清结构。如果你曾经写过Java,并且经历过ServeltJSP的阶段,那么你应该能明白我在说什么。

所以,React才特别推出了JSX语法了。

3、技术验证

用浏览器打开index.html,检查输出是否符合预期

5、源码下载

下载本节配套资源即可。

4、答疑

有问题直接留言即可。

相关文章:

React怎么创建虚拟dom和挂载到页面

1、&#x1f35f;你可以直接下载本节配套的资源代码&#xff0c;然后导入vscode看效果&#xff0c;也可以跟着教程一点一点敲&#xff0c;都是没问题的。 2、&#x1f914;怎么运行本节代码&#xff1f; 很简单&#xff0c;随便找个浏览器打开index.html即可。&#x1f495; 代…...

kafka-console-ui的简介及安装使用

kafka-console-ui的简介及安装使用 一、kafka-console-ui的简介二、安装kafka-console-ui2.1 源码安装2.2 docker安装 三、kafka-console-ui功能使用3.1、功能特性3.2、 功能介绍3.2.1 集群3.2.2 topic3.2.3 消费组3.2.4 Acl3.2.5 运维 一、kafka-console-ui的简介 kafka-cons…...

git 的分支管理详解

Git 的分支管理是其强大功能之一&#xff0c;允许开发者在同一代码库中并行开发多个特性或修复 bug&#xff0c;而不干扰主分支的代码。下面是对 Git 分支管理的详解&#xff1a; 1. 查看分支 查看所有分支 git branch # 查看本地分支 git branch -r # 查看远程分支 git br…...

w003基于Springboot的图书个性化推荐系统的设计与实现

&#x1f64a;作者简介&#xff1a;多年一线开发工作经验&#xff0c;原创团队&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取&#xff0c;记得注明来意哦~&#x1f339;赠送计算机毕业设计600个选题excel文…...

医院信息化与智能化系统(6)

医院信息化与智能化系统(6) 这里只描述对应过程&#xff0c;和可能遇到的问题及解决办法以及对应的参考链接&#xff0c;并不会直接每一步详细配置 如果你想通过文字描述或代码画流程图&#xff0c;可以试试PlantUML&#xff0c;告诉GPT你的文件结构&#xff0c;让他给你对应的…...

前端学习---(6)js基础--4

Promise Promise 是异步编程的一种新的解决方案和规范。 Promise优点: 1、可以很好地解决ES5中的回调地狱的问题&#xff08;避免了层层嵌套的回调函数&#xff09;。 2、统一规范、语法简洁、可读性和和可维护性强。 3、Promise 对象提供了简洁的 API&#xff0c;使得管理异步…...

241026-RHEL如何以root身份卸载Docker

在 RHEL 8.8 中&#xff0c;以 root 身份卸载 Docker 可以通过以下步骤完成&#xff1a; 停止 Docker 服务&#xff08;如果已启动&#xff09;&#xff1a; sudo systemctl stop docker删除 Docker 包&#xff1a; 运行以下命令卸载 Docker 引擎及其依赖包&#xff08;docker-…...

iPhone当U盘使用的方法 - iTunes共享文件夹无法复制到电脑怎么办 - 如何100%写入读出

效果图 从iPhone复制文件夹到windows电脑 步骤windows 打开iTunes通过USB连接iPhone和电脑手机允许授权iTunes中点击手机图标&#xff0c;进入到点击左边“文件共享”&#xff0c;在右边随便选择一个App&#xff08;随意...&#xff09;写入U盘&#xff1a;拖动电脑的文件&am…...

jenkins ssh 免密报错Host key verification failed.

jenkins 发布项目&#xff0c;ssh连接远程服务器时报错&#xff1a;Host key verification failed. 解决&#xff1a; 原因是生成的sshkey不是用的jenkins用户&#xff0c;所以切换用户到&#xff1a;jenkins重新生成sshkey su jenkins ssh-keygen -t rsa ssh-copy-id -i ~/…...

智能科学与技术(一级学科)介绍

智能科学与技术&#xff1a;探索智能的边界与未来 智能科学与技术的起源与发展学科定位与内涵学科范围与研究方向培养目标相关学科 在当今这个信息爆炸的时代&#xff0c;人工智能&#xff08;AI&#xff09;已经成为科技创新的重要驱动力。随着技术的不断进步&#xff0c;智能…...

iOS调试真机出现的 “__llvm_profile_initialize“ 错误

一、错误形式&#xff1a; app启动就崩溃&#xff0c;如下&#xff1a; Demo__llvm_profile_initialize:0x1045f7ab0 <0>: stp x20, x19, [sp, #-0x20]!0x1045f7ab4 <4>: stp x29, x30, [sp, #0x10]0x1045f7ab8 <8>: add x29, sp, #0x100x1…...

Android SELinux——neverallow问题处理(十六)

上一篇我们介绍了通过添加允许策略处理问题,这里我们主要来看一些 neverallow 策略问题该怎么处理。 一、neverallow介绍 遇到 neverallow 规则问题,千万别急着去注释/剔除里面原有的规则(原生的尽量别动)。增加 allow 规则是常见的解决办法,但是随着 android 版本的升级…...

Vue 关于路由

关于路由 路由的模式与区别 路由的两种模式&#xff1a; hashhistory 区别&#xff1a; 表象不同 hash 模式中&#xff0c;在地址里以 /#/ 分隔&#xff1b;history 模式中&#xff0c;地址里以 / 分隔。关于找不到当前页面发送请求的问题 history 模式会给后端发送一次请…...

香港海洋投资启动创新海洋牧场,领航全球海洋经济

香港&#xff0c;这座国际大都市&#xff0c;以其独特的地理位置和深厚的海洋文化底蕴&#xff0c;再次站在了全球海洋经济发展的前沿。近日&#xff0c;香港海洋投资发展有限公司&#xff08;以下简称“香港海洋投资”&#xff09;在万众瞩目中&#xff0c;正式宣布启动其创新…...

C/C++ 每日一练:二分查找

二分查找是一种高效的查找算法&#xff0c;用于在有序数组中定位目标元素的位置。它的核心思想是每次查找时将范围缩小一半。 题目要求 实现一个二分查找算法。给定一个递增排序的整型数组 arr 和一个目标值 target&#xff0c;编写一个函数 binarySearch&#xff0c;若 targe…...

Linux基础IO--重定向--缓冲区

1&#xff0c;为什么语言喜欢做封装&#xff1f; 我们先知道一个概念&#xff0c;显示器叫做字符设备&#xff0c;根据ACSLL码来打印数据&#xff0c;所以我们从键盘输入的 1234&#xff0c;在显示器看来就是一个一个的字符(1,2,3,4)而不是一千两百三十四: 下图输入字符类型数…...

Conda 安装与使用指南

Conda 是一个开源的软件包管理和环境管理系统&#xff0c;主要解决一个系统上同时要使用python2&#xff0c;python3等等多个python环境的切换问题&#xff0c;支持多种编程语言&#xff08;如 Python、R 等&#xff09;&#xff0c;可以在 Windows、macOS 和 Linux 上运行。它…...

C++中获取硬盘ID的方法

在C++中,直接获取硬盘的ID(通常是硬盘的序列号或唯一标识符)并不是一项简单的任务,因为这通常涉及到低级的硬件访问,这通常是由操作系统或特定的硬件驱动程序管理的。标准C++库并没有提供直接访问硬盘ID的功能。 然而,可以通过以下几种方法来获取硬盘的ID: 操作系统特定…...

OpenRTP 传输增加OpenRTPServer

开源地址 最近增加了OpenRTPServer&#xff0c; 已经修改完成一版放在了目录下&#xff0c;window和linux下编译都成功了&#xff0c;不过由于修改代码CMakefile 需要修改&#xff0c;先放放 OpenRTP开源地址 vlc得纠错传输方式 我发现我代码写错以后&#xff0c;vlc 依然能…...

使用vue3+cesium+earthsdk+supermap实现通视分析(有版本报错问题)

main.js: 这个文件是项目的入口文件,主要进行了以下操作: 使用Vue 3的createApp创建应用实例。加载了element-plus UI 组件库。加载了router和store,以及axios用于发送HTTP请求。将@turf/turf和自定义的bus.js注册到全局属性中,便于在组件中使用。环境配置需求: 你需要安…...

测试微信模版消息推送

进入“开发接口管理”--“公众平台测试账号”&#xff0c;无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息&#xff1a; 关注测试号&#xff1a;扫二维码关注测试号。 发送模版消息&#xff1a; import requests da…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统

医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上&#xff0c;开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识&#xff0c;在 vs 2017 平台上&#xff0c;进行 ASP.NET 应用程序和简易网站的开发&#xff1b;初步熟悉开发一…...

UDP(Echoserver)

网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法&#xff1a;netstat [选项] 功能&#xff1a;查看网络状态 常用选项&#xff1a; n 拒绝显示别名&#…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中&#xff0c;UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词

Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵&#xff0c;其中每行&#xff0c;每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid&#xff0c;其中有多少个 3 3 的 “幻方” 子矩阵&am…...

Device Mapper 机制

Device Mapper 机制详解 Device Mapper&#xff08;简称 DM&#xff09;是 Linux 内核中的一套通用块设备映射框架&#xff0c;为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程&#xff0c;并配以详细的…...

HDFS分布式存储 zookeeper

hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架&#xff0c;允许使用简单的变成模型跨计算机对大型集群进行分布式处理&#xff08;1.海量的数据存储 2.海量数据的计算&#xff09;Hadoop核心组件 hdfs&#xff08;分布式文件存储系统&#xff09;&a…...

短视频矩阵系统文案创作功能开发实践,定制化开发

在短视频行业迅猛发展的当下&#xff0c;企业和个人创作者为了扩大影响力、提升传播效果&#xff0c;纷纷采用短视频矩阵运营策略&#xff0c;同时管理多个平台、多个账号的内容发布。然而&#xff0c;频繁的文案创作需求让运营者疲于应对&#xff0c;如何高效产出高质量文案成…...

AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别

【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而&#xff0c;传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案&#xff0c;能够实现大范围覆盖并远程采集数据。尽管具备这些优势&#xf…...

华为OD机考-机房布局

import java.util.*;public class DemoTest5 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseSystem.out.println(solve(in.nextLine()));}}priv…...