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.rhkb.cn/news/150907.html

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

相关文章

数据结构-优先级队列(堆)

文章目录 目录 文章目录 前言 一 . 堆 二 . 堆的创建(以大根堆为例) 堆的向下调整(重难点) 堆的创建 堆的删除 向上调整 堆的插入 三 . 优先级队列 总结 前言 大家好,今天给大家讲解一下堆这个数据结构和它的实现 - 优先级队列 一 . 堆 堆&#xff08;Heap&#xff0…

林沛满-Wireshark的提示

本文整理自&#xff1a;《Wireshark网络分析的艺术 第1版》 作者&#xff1a;林沛满 著 出版时间&#xff1a;2016-02 最近有不少同事开始学习 Wireshark&#xff0c;他们遇到的第一个困难就是理解不了主界面上的提示信息&#xff0c;于是跑来问我。问的人多了&#xff0c;我也…

VMProtect使用教程(VC++MFC中使用)

VMProtect使用教程(VCMFC中使用) VMProtect是一种商业级别的代码保护工具&#xff0c;可以用于保护VC MFC程序。以下是使用VMProtect保护VC MFC程序的步骤&#xff1a; 1. 下载并安装VMProtect,C包含库及目录。 2. 在VC MFC项目中添加VMProtectSDK.h头文件&#xff0c;并在需…

小谈设计模式(18)—适配器模式

小谈设计模式&#xff08;18&#xff09;—适配器模式 专栏介绍专栏地址专栏介绍 适配器模式角色分析目标接口&#xff08;Target&#xff09;源接口&#xff08;Adaptee&#xff09;适配器&#xff08;Adapter&#xff09; 核心思想应用场景Java程序实现输出结果程序分析123 优…

R语言通过接口获取网上数据平台的免费数据

大家好&#xff0c;我是带我去滑雪&#xff01; 作为一名统计学专业的学生&#xff0c;时常和数据打交道&#xff0c;我深知数据的重要性。数据是实证研究的重要基础&#xff0c;每当在完成一篇科研论文中的实证研究部分时&#xff0c;我都能深刻体会实证研究最复杂、最耗时的工…

零基础,想做一名网络安全工程师,我可以去哪里学,或者有什么建议?

这应该是全网最全的网络安全扫盲帖了&#xff01;发CSDN也有一段时间了&#xff0c;经常会有朋友在后台问我各种问题&#xff0c;比如“应该如何选方向”、“网络安全前景如何”、“怎么选适合的安全岗位”等等。于是今天借这个问题来给大家好好说说&#xff0c;如果你是零基础…

软件定制开发的细节|网站搭建|APP小程序定制

软件定制开发的细节|网站搭建|APP小程序定制 在定制开发的过程中&#xff0c;一些小的细节往往能够影响到最终的产品质量和用户体验。下面我将为大家介绍一些软件定制开发的细节。 第一&#xff0c;明确需求。在定制开发之前&#xff0c;我们需要明确客户的需求和目标。只有明确…

微信、支付宝、百度、抖音开放平台第三方代小程序开发总结

大家好&#xff0c;我是小悟 小伙伴们都开启小长假了吧&#xff0c;值此中秋国庆双节之际&#xff0c;小悟祝所有的小伙伴们节日快乐。 支付宝社区很用心&#xff0c;还特意给寄了袋月饼&#xff0c;愿中秋节的圆月带给你身体健康&#xff0c;幸福团圆&#xff0c;国庆节的旗帜…

【生成模型】解决生成模型面对长尾类型物体时的问题 RE-IMAGEN: RETRIEVAL-AUGMENTED TEXT-TO-IMAGE GENERATOR

介绍 尽管最先进的模型可以生成常见实体的高质量图像&#xff0c;但它们通常难以生成不常见实体的图像&#xff0c;例如“Chortai&#xff08;狗&#xff09;”或“Picarones&#xff08;食物&#xff09;”。为了解决这个问题&#xff0c;我们提出了检索增强文本到图像生成器…

漏刻有时数据可视化大屏引导页设计2(偏移卡片、动态数字翻牌、countUp.min.js)

引入外部文件 <title>漏刻有时引导页</title><script src="js/jquery-3.3.1.min.js"></script><script src="js/countUp.min.js"></script><link rel="stylesheet" href="css/common.css">…

乌班图20.04简易部署k8s+kuboard第三方面板

1. 问题&#xff1a; 使用官方只能说步骤挺全。 &#x1f604;出错&#xff1f;出错不管&#xff0c;无论是系统问题&#xff0c;版本兼容问题&#xff0c;网络插件问题&#xff0c;还是防火墙问题&#xff0c;我只能说特异性问题分析检索起来很难很难。 新人很难搞懂&#x…

玩转ChatGPT:DALL·E 3生成图像

一、写在前面 好久不更新咯&#xff0c;因为没有什么有意思的东西分享的。 今天更新&#xff0c;是因为GPT整合了自家的图像生成工具&#xff0c;名字叫作DALLE 3。 DALLE 3是OpenAI推出的一种生成图像的模型&#xff0c;它基于GPT-3架构进行训练&#xff0c;但是它的主要目…

ubuntu系统开机黑屏(只显示logo、左上角光标闪烁)问题

问题背景 在使用pycharm的时候&#xff0c;我使用了pycharm的快捷键ctrlaltF7&#xff0c;结果进入了ubuntu的ttf界面&#xff0c;由于之前不知道这个东西&#xff0c;百度一顿乱搜&#xff0c;以为显卡驱动出问题了&#xff0c;就把驱动删了&#xff0c;其实我完全可以ctrlal…

黑马JVM总结(二十七)

&#xff08;1&#xff09;synchronized代码块 synchronized代码块的底层原理&#xff0c;它是给一个对象进行一个加锁操作&#xff0c;它是如何保证如果你出现了synchronized代码块中出现了问题&#xff0c;它需要给这个对象有一个正确的解锁操作呢&#xff0c;加锁解锁是成对…

Kafka在企业级应用中的实践

前言 前面说了很多Kafka的性能优点&#xff0c;有些童鞋要说了&#xff0c;这Kafka在企业开发或者企业级应用中要怎么用呢&#xff1f;今天咱们就来简单探究一下。 1、 使用 Kafka 进行消息的异步处理 Kafka 提供了一个可靠的消息传递机制&#xff0c;使得企业能够将不同组件…

2023年9月:比特币逆势崛起!全球市场暴跌中的优异表现引人瞩目!

比特币在 9 月份上涨&#xff0c;而许多传统资产遭受了重大损失&#xff0c;凸显了加密货币的多元化特性。全球市场的压力似乎源于政府债券收益率上升和油价上涨。 随着比特币链上指标在本月的改善&#xff0c;强劲的基本面发挥了关键作用。稳定币市值在去年下降后趋于稳定&am…

数据中心负载测试中常见的挑战和解决方案有哪些?

数据中心负载测试中常见的挑战一个是搭建真实的测试环境&#xff0c;需要考虑到数据中心的规模、硬件设备、网络拓扑等因素&#xff0c;以确保测试的准确性和可靠性。在进行负载测试时&#xff0c;需要合理管理资源&#xff0c;包括服务器、存储设备、网络带宽等&#xff0c;以…

ssm+vue的公司人力资源管理系统(有报告)。Javaee项目,ssm vue前后端分离项目。

演示视频&#xff1a; ssmvue的公司人力资源管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;ssm vue前后端分离项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结…

【微信小程序开发】一文学会使用CSS样式布局与美化

引言 在微信小程序开发中&#xff0c;CSS样式布局和美化是非常重要的一部分&#xff0c;它能够为小程序增添美感&#xff0c;提升用户体验。本文将介绍如何学习使用CSS进行样式布局和美化&#xff0c;同时给出代码示例&#xff0c;帮助开发者更好地掌握这一技巧。 一、CSS样式布…

Linux系统之部署h5ai目录列表程序

Linux系统之部署h5ai目录列表程序 一、h5ai介绍1.1 h5ai简介1.2 h5ai特点 二、本地环境介绍2.1 本地环境规划2.2 本次实践介绍 三、检查本地环境3.1 检查本地操作系统版本3.2 检查系统内核版本 四、安装httpd软件4.1 检查yum仓库4.2 安装httpd软件4.3 启动httpd服务4.4 查看htt…