【React】二.JSX

news2024/11/17 7:51:01

目录

 二.JSX

JSX的基本使用

 jsx使用步骤

JSX中使用JavaScript表达式

嵌入JS表达式

注意点

JSX的条件渲染

问题记录

JSX的列表渲染

JSX的样式处理

总结


 二.JSX

JSX的基本使用

  1. createElement()的问题
  • 繁琐不简洁
  • 不能直观看出所描述的结构
  • 不优雅,用户体验不佳

JavaScript XML的简称,表示在JavaScript代码中写XML(HTML)格式的代码

优势:声明式语法更加直观,与html结构相同,降低学习成本,提升开发效率

JSX是React的核心内容

 jsx使用步骤

1.使用jsx创建react元素

const title=<h1> hello jsx</h1>

2.渲染创建的react元素

ReactDOM.render(title,root)

JSX中使用JavaScript表达式

嵌入JS表达式

数据存储在JS中

语法:{JavaScript表达式}

const name='Jack'
const dv=(
<div>你好,我叫:{name}</div>
)
import React from 'react'

import ReactDOM from 'react-dom'

const name = 'user'
const age=8
const title = (
    <h1>
        hello ,{name},年龄:{ age}
    </h1>
)
ReactDOM.render(title,document.getElementById('root'))

 

注意点

1.React元素的属性名使用驼峰命名法

2.特殊属性名:class-->className 

                        for--->htmlFor

                        tabindex---->tabIndex 

3.没有子节点的React元素可以用/>结束。 

4.推荐:使用小括号包裹JSX,避免JS中的自动插入分号陷阱。

import React from 'react'

import ReactDOM from 'react-dom'

const name = 'user'
const age=8
const title = (
    <h1 className='title'>
        hello ,{name},年龄:{age},<span/>
    </h1>
    
)
ReactDOM.render(title,document.getElementById('root'))

JSX的条件渲染

场景:loading效果

条件渲染:根据条件渲染特定的JSX结构

// 2条件渲染
/**
 *if-else实现
 * 通过改变isLoading的true和false来改变样式
 */
const isLoading = true
const loadData = () => {
    if (isLoading) {
        return<div>loading......</div>
    }
    return <div>数据加载完成,此处显示加载后的数据</div>
}
const title = (
    <h1>
        条件渲染:
        {loadData()}
    </h1>
)
ReactDOM.render(title,document.getElementById('root'))

可以通过if-else或者三元运算符或者逻辑与 来完成条件渲染

//三目运算符
const loadData = () => {
    return  isLoading?(<div>loading...</div>):(<div>数据加载完成,此处显示加载后的数据</div>)
    
}

    return isLoading && (<div>loading...</div>)

逻辑与和前两不太一样,逻辑与的显示结果是样式显示与否。

true的时候显示loading,false的时候不显示文字

问题记录

loadData()只能先定义后调用

如果顺序反过来会警告,const不存在变量提升,要先声明后调用

JSX的列表渲染

  • 如果要渲染一组数据,应该使用数组的map()方法
  • 注意:渲染列表时应该添加key属性,key属性的值要保证唯一
  • 原则:map()遍历谁,就给谁添加key属性
  • 注意:尽量避免使用索引号作为key
import React from 'react'

import ReactDOM from 'react-dom'
//列表渲染
const songs = [
    { id: 1, name: '小苹果' },
    { id: 2, name: '光辉岁月' },
    {id:3,name:'云烟成雨'},
]
const list = (
    <ul>
        {/* {songs.map(item => <li>{item.name}</li>)} */
            songs.map(item => <li key={item.id}>{item.name}</li>)}
    </ul>
)
ReactDOM.render(list,document.getElementById('list1'))

只有index.js入口文件的代码会正常显示,如果有新建的js文件,需要import导入

JSX的样式处理

1.行内样式


// 行内样式
<h1 style={{ color: 'red', backgroundColor: 'skyblue' }}>JSX的样式处理</h1>

2.类名-className(推荐)

//类名
const list=(
    <h1 className='title' style={{ color: 'red', backgroundColor: 'skyblue' }}>
        JSX的样式处理
    </h1>
)
ReactDOM.render(list,document.getElementById('root'))

需要在当前js文件导入index.css,在css文件中编写样式。

又因为当前文件不是react的js入口文件,在index.js中导入当前js。

总结

  1. JSX是React的核心内容
  2. JSX表示JS代码中写HTML结构,是React声明式的体现
  3. 使用JSX配合嵌入的JS表达式、条件渲染、列表渲染,可以描述任意UI结构
  4. 推荐使用className的方式给JSX添加样式
  5. React完全利用JS语言自身的能力来编写UI,而不是造轮子增强HTML功能。

 

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

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

相关文章

Java设计模式-代理模式Proxy

介绍 代理模式是一种比较好理解的设计模式。简单来说就是 我们使用代理对象来代替对真实对象(real object)的访问&#xff0c;这样就可以在不修改原目标对象的前提下&#xff0c;提供额外的功能操作&#xff0c;扩展目标对象的功能。 代理模式的主要作用是扩展目标对象的功能&a…

Linux编译器-gcc/g++的使用

&#x1f4df;作者主页&#xff1a;慢热的陕西人 &#x1f334;专栏链接&#xff1a;Linux &#x1f4e3;欢迎各位大佬&#x1f44d;点赞&#x1f525;关注&#x1f693;收藏&#xff0c;&#x1f349;留言 本博客主要内容主要介绍了Linux编译器g/gcc的相关使用方法&#xff0c…

Linux学习笔记——分布式内存计算Flink环境部署

5.13、分布式内存计算Flink环境部署 5.13.1、简介 Flink同Spark一样&#xff0c;是一款分布式内存计算引擎&#xff0c;可以支撑海量数据的分布式计算。 Flink在大数据体系同样是明星产品&#xff0c;作为最新一代的综合计算引擎&#xff0c;支持离线计算和实时计算。 在大…

libcurl库及curl API的简介

目录 一、libcurl简介 二、curl API简介 三.库安装编译方法 内容来源&#xff1a;Http协议之libcurl实现 - 谢呈勖 - 博客园 (cnblogs.com) 一、libcurl简介 libcurl是一个跨平台的网络协议库&#xff0c;支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议。…

当 Rainbond 遇上龙蜥!小龙带你玩转一站式云原生,点击开启

Rainbond 是一个云原生应用管理平台&#xff0c;使用简单&#xff0c;不需要懂容器、Kubernetes 和底层复杂技术&#xff0c;支持管理多个 Kubernetes 集群&#xff0c;和管理企业应用全生命周期。主要功能包括应用开发环境、应用市场、微服务架构、应用交付、应用运维、应用级…

Golang的Fork/Join实现

做过Java开发的同学肯定知道&#xff0c;JDK7加入的Fork/Join是一个非常优秀的设计&#xff0c;到了JDK8&#xff0c;又结合并行流中进行了优化和增强&#xff0c;是一个非常好的工具。1、Fork/Join是什么Fork/Join本质上是一种任务分解&#xff0c;即&#xff1a;将一个很大的…

FPGA图像处理HLS实现RGB转灰度,提供HLS工程和vivado工程源码

目录一、图像RGB转灰度原理二、HLS方案实现三、HLS在线仿真并导出IP四、Kintex7开发板vivado工程验证五、zynq7100开发板vivado工程验证六、板级调试验证七、福利&#xff1a;工程源码获取一、图像RGB转灰度原理 图像rgb转灰度图有固定的公式&#xff0c;具体公式csdn一大堆&a…

mirco:bit是什么?小学生拿着它就能召唤神龙?

mirco:bit是什么&#xff1f;micro:bit是一款由英国广播电视公司(BBC) 为青少年编程教育设计&#xff0c;并由微软&#xff0c;三星&#xff0c;ARM&#xff0c;英国兰卡斯特大学等合作伙伴共同完成开发的微型电脑。BBC希望通过micro:bit驱动青少年参与到创造性的硬件制作和软件…

MySQL基础——DCL语句

概述 DCL(Data Control Language)语句&#xff1a;数据控制语句&#xff0c;用于控制不同数据段直接的许可和访问级别的语句。这些语句定义了数据库、表、字段、用户的访问权限和安全级别。 管理用户 查询 查询用户代码如下&#xff1a; USE mysql; SELECT * FROM user; …

ASEMI桥式整流器KBU808的优缺点

编辑-Z 型号&#xff1a;KBU808 最大重复峰值反向电压&#xff08;VRRM&#xff09;&#xff1a;800V 最大RMS电桥输入电压&#xff08;VRMS&#xff09;&#xff1a;560V 最大直流阻断电压&#xff08;VDC&#xff09;&#xff1a;800V 最大平均正向整流输出电流&#xf…

3D视觉技术登上火星?NASA也用上了NeRF技术做太空勘探

原文链接&#xff1a;https://www.techbeat.net/article-info?id4468 作者&#xff1a;seven_ 现阶段&#xff0c;人类探索宇宙的一个关键方向是如何高效的利用航天器返回的数据来了解和分析外太空的环境特点。其中最为常用的就是图像数据&#xff0c;但是这些数据非常宝贵&am…

C语言-自定义类型-结构体应用-通讯录(11.2)

目录 1.通讯录的设计思路 1.1主函数与通讯录框架 1.2菜单的实现 1.3通讯录的定义与初始化 2.通讯录具体功能的实现 2.1添加联系人 2.2删除联系人 2.3查找联系人 2.4修改联系人信息 2.5整理通讯录&#xff08;按年龄排序&#xff09; 2.6查看整个通讯录 3.通讯录源码…

Ubuntu 网络管理

一&#xff1a;NetPlan配置 1、安装netplan 如果/etc/netplan目录不存在请用以下命令安装&#xff1a; apt -y install netplan.io 2、配置文件 创建并编辑/etc/netplan/01-netplan.yaml文件&#xff1a; eth0&#xff1a;动态分配&#xff1b;eth1&#xff1a;静态分配 …

聊一聊nginx中KeepAlive的设置

文章目录问题分析为什么要有KeepAlive&#xff1f;TCP KeepAlive和HTTP的Keep-Alive是一样的吗&#xff1f;Nginx的TCP KeepAlive如何设置Apache中KeepAlive和KeepAliveTimeOut参考资料问题 之前工作中遇到一个KeepAlive的问题&#xff0c;现在把它记录下来&#xff0c;场景是…

【BP靶场portswigger-客户端11】跨站点脚本XSS-20个实验(上)

前言&#xff1a; 介绍&#xff1a; 博主&#xff1a;网络安全领域狂热爱好者&#xff08;承诺在CSDN永久无偿分享文章&#xff09;。 殊荣&#xff1a;CSDN网络安全领域优质创作者&#xff0c;2022年双十一业务安全保卫战-某厂第一名&#xff0c;某厂特邀数字业务安全研究员&…

ssm权限管理系统1

先说一个声明&#xff0c;这个文章可能不完整&#xff0c;也就是说&#xff0c;我只是列举出了项目里面部分疑问难点&#xff0c;然后你们想做&#xff0c;可以去b站查看这个项目的视频。我这里会上传每一部分源代码 svn: 安装好svn服务器之后&#xff0c;我们需要去服务器建…

Python之勒让德多项式

文章目录勒让德多项式简介求导和积分求根和反演拟合勒让德多项式简介 Legendre多项式是一种非常重要的正交多项式&#xff0c;在物理学中有着广泛的应用&#xff0c;例如点电荷在空间中的激发电势就具备勒让德多项式的形式。其表达形式为 Pn(x)12nn!dndxn{(x2−1)n}P_n(x)\fra…

D. Rorororobot(线段树寻找区间最大值)

Problem - 1709D - Codeforces 有一个网格&#xff0c;由n行和m列组成。行的编号是从1到n&#xff0c;从下到上。列从左至右编号为1至m。第i列的底部ai单元被封锁&#xff08;第1,2,...,ai行的单元&#xff09;&#xff0c;其余n-ai单元没有被封锁。 一个机器人正在穿越这个网…

制冷设备远程监控解决方案

大中型工业制冷设备方面在国内发展还是处在一个发展期&#xff0c;前景广阔&#xff0c;在船舶行业&#xff0c;大型化&#xff0c;个性化&#xff0c;大冷量化是趋势&#xff0c;在石油石化领域&#xff0c;工艺分离、结晶浓缩、提纯催化需求低温&#xff0c;而在建筑领域&…

Vue+element 实现影响榜功能

目录 一、英雄榜实现 1、引入element Lib 和VUE 2、设置滚动条动态显示 1&#xff09;设置对应的VUE参数名&#xff1a;scrollHiddenVar 2&#xff09;VUE data定义 3&#xff09;mounted 设置鼠标监听事件 4&#xff09;监听方法 3、设置element Table 4、table 数组…