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

React之JSX的介绍与使用步骤,注意事项,条件渲染,列表渲染以及css样式处理

React之JSX的介绍与使用

  • 一、JSX的介绍
  • 二、JSX使用步骤
  • 三、JSX注意事项
  • 四、JSX中使用JavaScript表达式
  • 五、条件渲染
  • 六、列表渲染
  • 七、CSS样式处理
  • 八、JSX 总结

一、JSX的介绍

  • 简介
    • JSX是JavaScript XML的简写,表示了在Javascript代码中写XML(HTML)格式的代码
  • 优势
    • 声明式语法更加直观,与HTML结构相同,降低学习成本,提高开发效率。
  • JSX是react的核心内容
    • 注意:JSX 不是标准的 JS 语法,是 JS 的语法扩展。脚手架中内置的 @babel/plugin-transform-react-jsx 包,用来解析该语法。

总结

  • 1. 使用jsx创建元素是react声明式UI的体现
  • 2.使用jsx语法更加直观,降低学习成本,提高开发效率

二、JSX使用步骤

步骤

  • 1.导入reactDOM包
  • 2.使用JSX创建react元素
  • 3.将react元素渲染到页面上

核心代码

//react17版本之后,使用jsx不需要额外导入React
//1.导入
import ReactDOM from 'react-dom/client'//2.创建
const h1=<h1 className="box">hello react</h1>//3.渲染
ReactDOM.createRoot(document.querySelector('#root')).render(h1)

三、JSX注意事项

  • JSX必须要有一个根节点, 如果没有根节点,可以使用<></>(幽灵节点)或者<React.Fragment></React.Fragment>
  • 所有标签必须结束,如果是单标签可以使用/>结束
  • JSX中语法更接近与JavaScript,属性名采用驼峰命名法
    • class ===> className
    • for ===> htmlFor
  • JSX可以换行,如果JSX有多行,推荐使用()包裹JSX,防止 JS 自动插入分号的 bug

四、JSX中使用JavaScript表达式

  • JS 表达式:数据类型和运算符的组合(可以单独出现数据类型,也可以数据类型+运算符的组合)

    • 特点:有值 或者说 能够计算出一个值
    • 字符串、数值、布尔值、null、undefined、object( [] / {} )
    • 1 + 2、‘abc’.split(‘’)、[‘a’, ‘b’].join(‘-’)
    • function fn() {}、 fn() - 注意:函数不能直接渲染,但是,将来可以作为事件处理程序,因此,总的来说也可以出现在 {} 中
    • 验证是不是 JS 表达式的技巧:看内容能不能作为方法的参数,比如,console.log( 表达式 )
  • 在jsx中使用表达式语法:{ JS 表达式 }

    • 比如,<h1>你好,我叫 {name}</h1>

    核心代码

const name = 'zs'
const age = 18
const title = (<h1>姓名:{name}, 年龄:{age}</h1>
)

可以访问对象的属性

const car = {brand: '玛莎拉蒂'
}
const title = (<h1>汽车:{car.brand}</h1>
)

可以访问数组的下标

const friends = ['张三', '李四']
const title = (<h1>汽车:{friends[1]}</h1>
)

可以使用三元运算符

const gender = 18
const title = (<h1>是否允许进入:{age >= 18 ? '是' : '否'}</h1>
)

可以调用方法

function sayHi() {return '你好'
}
const title = <h1>姓名:{sayHi()}</h1>

JSX本身

const span = <span>我是一个span</span>
const title = <h1>JSX 做为表达式:{span}</h1>

JSX中的注释

{/* 这是jsx中的注释 */}   快键键 ctrl + /
  • 总结
    • 1.jsx中可以出现任意的js表达式
    • 2.在jsx中只能出现js表达式,不能出现js语句,比如if、for、while等

五、条件渲染

内容

  • 在react中,一切都是javascript,所以条件渲染完全是通过js来控制的
  • 可以使用if/else三元运算符逻辑与(&&)运算符

核心代码

  • 通过判断if/else控制
const isLoding = false
const loadData = () => {if (isLoding) {return <div>数据加载中.....</div>} else {return <div>数据加载完成,此处显示加载后的数据</div>}
}const title = <div>条件渲染:{loadData()}</div>
  • 通过三元运算符控制
const isLoding = false
const loadData = () => {return isLoding ? (<div>数据加载中.....</div>) : (<div>数据加载完成,此处显示加载后的数据</div>)
}
  • 逻辑与(&&)运算符
const isLoding = false
const loadData = () => {return isLoding && <div>加载中...</div>
}const title = <div>条件渲染:{loadData()}</div>

总结

  1. 在react中,可以使用if/else三元运算符逻辑与(&&)运算符实现条件的渲染

六、列表渲染

内容

  • 作用:重复生成相同的 HTML 结构,比如,歌曲列表、商品列表等
  • 实现:使用数组的 map 方法
  • 注意:需要为遍历项添加 key 属性
    • key 在 HTML 结构中是看不到的,是 React 内部用来进行性能优化时使用的
    • key 在当前列表中要唯一
    • 如果列表中有像 id 这种的唯一值,就用 id 来作为 key 值
    • 如果列表中没有像 id 这种的唯一值,就可以使用 index(下标)来作为 key 值

核心代码

  • 列表的渲染
const songs = [{ id: 1, name: '痴心绝对' }, { id: 2, name: '像我这样的人' }, { id: 3, name: '南山南' }
]const list = songs.map(song => <li>{song.name}</li>)const dv = (<div><ul>{list}</ul></div>
)
  • 直接在JSX中渲染
const songs = [{ id: 1, name: '痴心绝对' }, { id: 2, name: '像我这样的人' }, { id: 3, name: '南山南' }
]const dv = (<div><ul>{songs.map(song => <li>{song.name}</li>)}</ul></div>
)
  • 遍历时添加 key 属性
const dv = (<div><ul>{songs.map(song => (<li key={song.id}>{song.name}</li>))}</ul></div>
)

总结

  • 注意1:列表渲染时应该给重复渲染的元素添加key属性,key属性的值要保证唯一

  • 注意2:key 值尽量避免使用 index 下标

七、CSS样式处理

内容

  1. 行内样式 - style
    1. 像 width/height 等属性,可以省略 px,直接使用 数值 即可
    2. 如果是需要使用百分比的单位,此时,继续使用字符串的值即可(比如,"60%"
  2. 类名 - className【推荐】

核心代码:

  • 行内样式-style
const dv = (<div style={ { color: 'red', backgroundColor: 'pink' } }>style样式</div>
)
  • 类名-className
// 导入样式
import './base.css'
const dv = <div className="title">style样式</div>

总结:

  1. JSX 中如何给元素添加样式? 1 行内 style 2 类名 className

八、JSX 总结

  • React 使用 JSX 来编写 UI(HTML)
  • React 完全利用 JS 语言自身的能力来增强 UI 的编写 - 能用 JS 来实现的功能绝不会增加一个新的 API
  • 现在,就可以使用 React 来编写任意 UI 结构了
// JSX
<div>{ JS 表达式}</div>

相关文章:

React之JSX的介绍与使用步骤,注意事项,条件渲染,列表渲染以及css样式处理

React之JSX的介绍与使用 一、JSX的介绍二、JSX使用步骤三、JSX注意事项四、JSX中使用JavaScript表达式五、条件渲染六、列表渲染七、CSS样式处理八、JSX 总结 一、JSX的介绍 简介 JSX是JavaScript XML的简写&#xff0c;表示了在Javascript代码中写XML(HTML)格式的代码 优势 声…...

sql进阶:求满足某列数值相加无限接近90%的行(90分位)

sql 一、案例分析二、思路三、代码实现一、案例分析 表中有某个id列和数值列,求数值列占比为90%的id,如有个用户表,存储id和消费金额order_cnt,求一条sql查出消费占比无限接近90%的所有客户,如表中总消费为10000,占比最高的是4000、3000、2800,对应A、B、C用户,查出A、B、C用户…...

设计模式大白话——观察者模式

文章目录 一、概述二、示例三、模式定义四、其他 一、概述 ​ 与其叫他观察者模式&#xff0c;我更愿意叫他叫 订阅-发布模式 &#xff0c;这种模式在我们生活中非常常见&#xff0c;比如&#xff1a;追番了某个电视剧&#xff0c;当电视剧有更新的时候会第一时间通知你。当你…...

机器学习小记-序

机器学习是人工智能的一个重要分支&#xff0c;根据学习任务的不同&#xff0c;可以将机器学习分为以下几类&#xff1a; 监督学习&#xff08;Supervised Learning&#xff09;&#xff1a; 应用场景&#xff1a;监督学习适用于已标记数据集的任务&#xff0c;其中每个样本都有…...

IP基础知识总结

IP他负责的是把IP数据包在不同网络间传送&#xff0c;这是网络设计相关的&#xff0c;与操作系统没有关系。所以这部分知识&#xff0c;不是网络的重点。IP和路由交换技术联系紧密。但是要作为基本知识点记住。 一、基本概念 网络层作用&#xff1a;实现主机与主机之间通信。 …...

Java设计模式-单例模式

单例模式 1.单例模式含义 单例模式就是保证一个类仅有一个实例&#xff0c;并提供一个访问它的全局访问点。 其实单例模式很好理解&#xff0c;当我们new一个对象实例的时候&#xff0c;这个对象会被放到一个内存中&#xff0c;当我们再次new同一个对象的实例的时候&#xf…...

小程序----配置原生内置编译插件支持sass

修改project.config.json配置文件 在 project.config.json 文件中&#xff0c;修改setting 下的 useCompilerPlugins 字段为 ["sass"]&#xff0c; 即可开启工具内置的 sass 编译插件。 目前支持三个编译插件&#xff1a;typescript、less、sass 修改之后可以将原.w…...

GitLab 删除项目

1.点击头像 2.点击Profile 3.选择要删除的项目点进去 4.settings-general-Advances-expand 5.然后在弹出框中输入你要删除的项目名称即可...

Mac m1 下eclipse下载及jdk环境变量配置

一、安装eclipse 1、下载eclipse Eclipse downloads - Select a mirror | The Eclipse Foundation 此版本为m1芯片适用版本 2、下载后下一步安装即可 安装成功后&#xff0c;可以看到图标&#xff1a; 二、安装jdk 1、下载jdk 下载此版本即可&#xff0c;下载完成之后一直…...

Java中List与数组之间的相互转换

一、List列表与对象数组 List列表中存储对象&#xff0c;如List<Integer>、List<String>、List<Person>&#xff0c;对象数组中同样存储相应的对象&#xff0c;如Integer[]、String[]、Person[]&#xff0c;对象数组与对象List的转换可通过如下方式实现&…...

嵌入式_GD32看门狗配置

嵌入式_GD32独立看门狗配置与注意事项 文章目录 嵌入式_GD32独立看门狗配置与注意事项前言一、什么是独立看门狗定时器&#xff08;FWDGT&#xff09;二、独立看门狗定时器原理三、独立看门狗定时器配置过程与注意事项总结 前言 使用GD3单片机时&#xff0c;为了提供了更高的安…...

Python 中的 JSON 操作:简单、高效的数据交换格式

在现代的数据交换和存储中&#xff0c;JSON&#xff08;JavaScript Object Notation&#xff09;作为一种轻量级的数据交换格式&#xff0c;备受青睐。它不仅易于阅读和理解&#xff0c;还可以灵活地表达和存储高维数据。本文将介绍如何在 Python 中操作 JSON 文件&#xff0c;…...

IT行业面试攻略:技巧与心态的平衡

引言&#xff1a;在面试IT公司时&#xff0c;调整好心态是取得优秀表现的关键。面试心态直接影响着我们在面试中的自信程度和表现。面对这一挑战&#xff0c;我们需要学会积极自信、认识到紧张是正常的、进行充分准备以及以积极的心态去迎接面试。只有在拥有正确的心态下&#…...

【玩转Linux】标准io缓冲区的操作

(꒪ꇴ꒪ ),hello我是祐言博客主页&#xff1a;C语言基础,Linux基础,软件配置领域博主&#x1f30d;快上&#x1f698;&#xff0c;一起学习&#xff01;送给读者的一句鸡汤&#x1f914;&#xff1a;集中起来的意志可以击穿顽石!作者水平很有限&#xff0c;如果发现错误&#x…...

28.JavaWeb-Elasticsearch

1.Elasticsearch概述 Elasticsearch 是一个分布式的全文检索引擎。采用Java语言开发&#xff0c;基于Apache协议的开源项目&#xff0c;具有实时搜索&#xff0c;稳定&#xff0c;可靠&#xff0c;快速的特点。 1.1 全文检索引擎 分为通用搜索引擎&#xff08;百度、谷歌&…...

Python Flask构建微信小程序订餐系统 (十)

🔥 编辑会员信息 🔥 编辑会员信息可以通过点击会员列表操作,也可以点击会员信息详情点击进行操作 🔥 修改编程会员信息列表布局 🔥 修改 web/templates/member/index.html 文件,添加跳转到编辑会员信息的页面 web/templates/member/set.html 🔥 创建用于会员…...

j2ee相关知识点

浏览器栏中&#xff0c;输入的是servlet的mapping映射&#xff0c;请求到servlet中去&#xff0c;jsp路径&#xff0c;会跳转到对应的页面 Servlet接口位于最顶端&#xff0c;GenericServlet实现了Servlet&#xff0c;HttpServlet继承了GenericServlet 浏览器中访问Servlet映…...

Shell脚本学习-eval内置命令

这个命令&#xff0c;平时接触不是很多&#xff0c;所以不知道是什么回事。 eval内置命令&#xff1a; 功能&#xff1a;当Shell程序执行到eval语句的时候&#xff0c;Shell读入参数args&#xff0c;并将它们组合成一个新的命令&#xff0c;然后执行。也就是重新运算求出参数的…...

word中将合并后的多行拆分为原先的行数

word中将已经合并的多行拆分为原先的行数&#xff0c;我们不用刻意去数应该是多少行&#xff0c; 只需将拆分的行数不断增加&#xff0c;word会默认最大增加到合并前的行数。...

网络知识点之-BGP协议

本文章收录至《网络》专栏&#xff0c;点击右上角专栏图标可访问本专栏&#xff01; 边界网关协议&#xff08;BGP&#xff09;是运行于 TCP 上的一种自治系统的路由协议。 BGP 是唯一一个用来处理像因特网大小的网络的协议&#xff0c;也是唯一能够妥善处理好不相关路由域间的…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言&#xff1a; 通过AI视觉技术&#xff0c;为船厂提供全面的安全监控解决方案&#xff0c;涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面&#xff0c;能够实现对应负责人反馈机制&#xff0c;并最终实现数据的统计报表。提升船厂…...

逻辑回归:给不确定性划界的分类大师

想象你是一名医生。面对患者的检查报告&#xff08;肿瘤大小、血液指标&#xff09;&#xff0c;你需要做出一个**决定性判断**&#xff1a;恶性还是良性&#xff1f;这种“非黑即白”的抉择&#xff0c;正是**逻辑回归&#xff08;Logistic Regression&#xff09;** 的战场&a…...

Oracle查询表空间大小

1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...

FastAPI 教程:从入门到实践

FastAPI 是一个现代、快速&#xff08;高性能&#xff09;的 Web 框架&#xff0c;用于构建 API&#xff0c;支持 Python 3.6。它基于标准 Python 类型提示&#xff0c;易于学习且功能强大。以下是一个完整的 FastAPI 入门教程&#xff0c;涵盖从环境搭建到创建并运行一个简单的…...

从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路

进入2025年以来&#xff0c;尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断&#xff0c;但全球市场热度依然高涨&#xff0c;入局者持续增加。 以国内市场为例&#xff0c;天眼查专业版数据显示&#xff0c;截至5月底&#xff0c;我国现存在业、存续状态的机器人相关企…...

基于当前项目通过npm包形式暴露公共组件

1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹&#xff0c;并新增内容 3.创建package文件夹...

macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用

文章目录 问题现象问题原因解决办法 问题现象 macOS启动台&#xff08;Launchpad&#xff09;多出来了&#xff1a;Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显&#xff0c;都是Google家的办公全家桶。这些应用并不是通过独立安装的…...

Qt Http Server模块功能及架构

Qt Http Server 是 Qt 6.0 中引入的一个新模块&#xff0c;它提供了一个轻量级的 HTTP 服务器实现&#xff0c;主要用于构建基于 HTTP 的应用程序和服务。 功能介绍&#xff1a; 主要功能 HTTP服务器功能&#xff1a; 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...

腾讯云V3签名

想要接入腾讯云的Api&#xff0c;必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口&#xff0c;但总是卡在签名这一步&#xff0c;最后放弃选择SDK&#xff0c;这次终于自己代码实现。 可能腾讯云翻新了接口文档&#xff0c;现在阅读起来&#xff0c;清晰了很多&…...

第7篇:中间件全链路监控与 SQL 性能分析实践

7.1 章节导读 在构建数据库中间件的过程中&#xff0c;可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中&#xff0c;必须做到&#xff1a; &#x1f50d; 追踪每一条 SQL 的生命周期&#xff08;从入口到数据库执行&#xff09;&#…...