React18学习

17、React_JSX的注意事项

image-20231006191103018
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>JSX的注意</title><script src="./script/react.development.js"></script><script src="./script/react-dom.development.js"></script><script src="./script/babel.min.js"></script>
</head>
<body><div id="root"></div><script type="text/babel">const name = '小时光';const div = <div style={{backgroundColor:'red'}}><div id="name1">我是id</div><div className="class1">我是class<br/>{name}</div><div>{}、{undefined}、{false}、{NaN}</div></div>const root = ReactDOM.createRoot(document.getElementById('root'));root.render(div);</script>
</body>
</html>

image-20231006191427870

18、React_渲染列表

其实就是根据原有的数据,生成一个新的数据

06_渲染列表.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>06_渲染列表</title><script src="./script/react.development.js"></script><script src="./script/react-dom.development.js"></script><script src="./script/babel.min.js"></script>
</head>
<body>
<div id="root"></div>
<script type="text/babel">const name = '孙悟空';/***  {}只能用来放js表达式,不能放语句(if for)*/const long = 'en';let div;if(long === 'en'){div = <div>Hello{name}</div>;}else if(long === 'cn'){div = <div>你好{name}</div>}const data = ['孙悟空','猪八戒','沙和尚'];/*<ul><li>孙悟空</li><li>猪八戒</li><li>沙和尚</li>....</ul>我们想得到的是[<li>孙悟空</li><li>猪八戒</li><li>沙和尚</li>]*//*两种方法:*/// 方法1、const arr = [];for(let i = 0;i<data.length;i++){arr.push(<li>{data[i]}</li>);}// 方法2、数组中有个方法,想要对旧数组进行处理,然后得到一个新的数组const list = <ul>{data.map(item => <li>{item}</li>)}</ul>// 将arr渲染为一个列表在网页中// jsx会自动将数组中的元素在页面中显示//const list = <ul>{arr}</ul>const root = ReactDOM.createRoot(document.getElementById('root'));root.render(arr);</script>
</body>
</html>

map()函数对一个数组进行处理。在代码中,data是一个数组,map()函数会遍历数组中的每个元素,并且对每个元素执行指定的操作,然后返回一个新的数组,新数组中包含了经过操作后的元素。

19、虚拟DOM

image-20231006203104507
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>06_虚拟DOM</title><script src="./script/react.development.js"></script><script src="./script/react-dom.development.js"></script><script src="./script/babel.min.js"></script><script src="http://libs.baidu.com/jquery/2.1.4/jquery.min.js"></script>
</head>
<body>
<button id="btn">点我一下</button>
<hr>
<div id="root"></div>
<script type="text/babel">// 创建一个数据const data = ['孙悟空','猪八戒','沙和尚'];// 创建列表,只要是在jsx中用表达式就必须加{}const arr = <ul>{data.map(item => <li>{item}</li>)}</ul>// 获取根元素const root = ReactDOM.createRoot(document.getElementById('root'));// 渲染元素root.render(arr);/*** 在react中我们操作的元素被称为React元素,并不是真正的原生DOM元素,*    React通过虚拟DOM 将React元素和原生DOM,进行映射,虽然操作的React元素,但是这些操作最终都会在真实DOM中体现出来。*    虚拟DOM的好处:*        1、降低API的复杂度*        2、解决兼容问题*        3、提升性能(减少DOM的不必要操作)**     对于3、提升性能:*        React会通过diffing算法,将新的元素和旧的元素进行比较*        通过比较找到发生变化的元素,并且只对变化的元素进行修改,没有发生变化吃的不予处理**    比较两次数据时,React会先比较父元素,父元素如果不同,直接所有元素全部替换*      父元素一样的话,再去逐个比较子元素,直到找到所有发生变化的元素为止*//*// 新数据没有发生任何变化,重新进行渲染$('btn').click(function (){// 创建一个数据const data = ['孙悟空','猪八戒','沙和尚'];// 创建列表,只要是在jsx中用表达式就必须加{}const arr = <ul>{data.map(item => <li>{item}</li>)}</ul>// 获取根元素const root = ReactDOM.createRoot(document.getElementById('root'));// 渲染元素root.render(arr);})*/z//新数据发生变化$('#btn').click(function (){// 新数据没有发生任何变化,重新进行渲染// 创建一个数据const data = ['TOM','猪八戒','沙和尚'];// 创建列表,只要是在jsx中用表达式就必须加{}const arr = <ul>{data.map(item => <li>{item}</li>)}</ul>// 获取根元素const root = ReactDOM.createRoot(document.getElementById('root'));// 渲染元素root.render(arr);})
</script>
</body>
</html>

列表中的key

当我们在JSX中显示数组中,数组中没一个元素都需要设置一个唯一key,否则控制台会显示红色警告
image-20231006210007037

image-20231006210035649

image-20231006210250048

在渲染一个列表时,通常会给列表项设置一个唯一的key来避免上述问题​	(这个key在当前列表中唯一即可)注意:1.开发中一班会采用数据的id作为key2.尽量不要使用元素的索引作为key索引会跟着元素的顺序改变而改变。唯一的不同就是,控制台的警告没了。当元素的顺序不会发生变化时,用索引也没有问题,如下:const arr = <ul>{data.map((item,index) => <li key={index}>{item}</li>)}</ul>

20、创建React项目(手动)

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mysql 8手动终止某个事务并释放其持有的锁

示范数据表 age具有index普通索引 在mysql数据库里的information_schema.INNODB_TRX表中存储有innodb的所有事务&#xff0c;我们可以查看该表来查看正在进行的事务 现在我开启一个事务&#xff0c;执行第1、2行SQL&#xff0c;启动事务并持有id3的行锁 刷新事务表可以看到…

大数据软件项目的数据清洗

大数据软件项目中的数据清洗是数据预处理过程中的重要环节&#xff0c;用于识别和纠正数据集中的错误、不一致性和不完整性。虽然没有专门的"数据清洗开发框架"&#xff0c;但有许多工具和库可用于数据清洗任务。以下是一些常见的数据清洗工具和库&#xff0c;可以与…

回顾Softing 2023工博之旅精彩瞬间

2023年9月23日&#xff0c;为期5天的第23届中国国际工业博览会&#xff08;CIIF&#xff09;于上海国家会展中心圆满落幕。Softing作为PROFIBUS创始人之一&#xff0c;德国工业4.0的领军企业之一&#xff0c;在本次展会上向大家呈现了众多工业自动化及IT网络方面的领先产品及方…

大话机器学习准确率(Accuracy)、精确率(Pecision)、召回率(Recall)以及TP、FP、TN、FN

话说三国时期&#xff0c;乱世出人才&#xff0c;当时刘备让张飞帮忙招兵买马&#xff0c;寻找人才。张飞发公告以后&#xff0c;有10人来面试&#xff0c;这10人分为两类&#xff0c;人才和庸才&#xff0c;各占百分之五十&#xff0c;张飞的主要作用就是从这10人中识别出人才…

秋招校招,什么是群面?

时间已经来到十月份&#xff0c;我们也迎来了秋季招聘的高峰期。一般来说&#xff0c;企业为了提高面试的速度&#xff0c;一般都会让我们进行群面。可是&#xff0c;很多人不懂得“群面”的意思&#xff0c;由此导致自己在面试环节丢分。今天&#xff0c;就跟着小编一起来了解…

vscode刷leetcode使用Cookie登录

1、安装插件 打开vscode&#xff0c;选择扩展&#xff0c;搜索leetcode&#xff0c;选择第一个&#xff0c;带有中文力扣字样&#xff0c;安装后重启 2、切换 选择这个小球&#xff0c;切换中文版本&#xff0c;切换后&#xff0c;会显示一个打勾 3、 选择小球旁边的有箭…

解析‘找不到msvcp140.dll无法继续执行代码’这个问题的解决方法

大家好&#xff01;今天我要和大家分享的主题是“msvcp140.dll丢失的解决方法”。我们都知道&#xff0c;在运行一些软件或游戏时&#xff0c;经常会遇到“msvcp140.dll丢失”的错误提示&#xff0c;这会让我们非常烦恼。那么&#xff0c;这个问题是什么原因引起的呢&#xff1…

bigemap在林业勘测规划设计行业的一些应用

选择Bigemap的原因&#xff1a; 主要注重影像的时效性&#xff0c;软件的影像时效性比其他的更新快&#xff0c;更清晰。 使用场景&#xff1a; 1.林业督查&#xff0c;主要是根据国家下发的图斑&#xff0c;结合测绘局的影像以及bigemap的较新影像对比去年和今年的林地变化。…

Git/GitHub/Idea的搭配使用

目录 1. Git 下载安装1.1. 下载安装1.2. 配置 GitHub 秘钥 2. Idea 配置 Git3. Idea 配置 GitHub3.1. 获取 GitHub Token3.2. Idea 根据 Token 登录 GitHub3.3. Idea 提交代码到远程仓库3.3.1. 配置本地仓库3.3.2. GitHub 创建远程仓库1. 创建单层目录2. 创建多层目录3. 删除目…

4.方法操作实例变量 对象的行为

4.1 操作对象状态的方法 同一类型的每个对象能够有不同的方法行为&#xff0c;任一类的每个实例都带有相同的方法&#xff0c;但是方法可以根据实例变量的值来表现不同的行为。 play()会播放title值表示的歌曲&#xff0c;调用某个实例的play()可能会播放“Politik”而另一个会…

Flink+Doris 实时数仓

Flink+Doris 实时数仓 Doris基本原理 Doris基本架构非常简单,只有FE(Frontend)、BE(Backend)两种角色,不依赖任何外部组件,对部署和运维非常友好。架构图如下 可以 看到Doris 的数仓架构十分简洁,不依赖 Hadoop 生态组件,构建及运维成本较低。 FE(Frontend)以 Java 语…

1.Linux入门基本指令

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 目录 01.ls指令 02.pwd指令 03.cd指令 04.touch指令 05.mkdir指令(重要) 06.rmdir&&rm指令(重要) 07.man指令(重要) 08.cp指令(重要) 09.mv指令(重要) 10.cat指令 nano指令 echo指令 输出重定向 追加重…