react18【系列实用教程】JSX (2024最新版)
为什么要用 JSX?
JSX 给 HTML 赋予了 JS 的编程能力
JSX 的本质
JSX 是 JavaScript 的语法扩展,浏览器本身不能识别,需要通过解析工具(如babel)解析之后才能在浏览器中运行。
bable 官网可以查看解析过程

JSX 的语法
{} 中写 JS 表达式
类似 vue 的 {{}}
渲染 JS 数据
对象
<div style={{ color: "red" }}>朝阳</div>
其他类型的数据也能直接渲染,但基本不会使用。
渲染变量
function Demo() {const name = "朝阳";return (<><div>{name}</div></>);
}export default Demo;
调用函数
function getName() {return "朝阳";
}function Demo() {return (<><div>{getName()}</div></>);
}export default Demo;
调用方法
<div>{new Date().getDay()}</div>
添加注释
{/* 我是一段注释 */}
条件渲染 if
类似 vue 的 v-if
单分支 ( && )
function Demo() {const showName = true;return <>{showName && <div>朝阳</div>}</>;
}
双分支( 三元运算符 ?: )
function Demo() {const login = false;return <>{login ? <div>朝阳</div> : <button>登录</button>}</>;
}
多分支( 调用内含 if 的函数 )
单分支和双分支也能使用,只是麻烦了些。
const type = "2";function getTypeName() {if (type === "1") {return <div>生活</div>;} else if (type === "2") {return <div>学习</div>;} else if (type === "3") {return <div>工作</div>;}
}function Demo() {return <>{getTypeName()}</>;
}export default Demo;
若分支特别多,也可以使用 Switch 语句。
const type = "3";function getTypeName() {switch (type) {case "1":return <div>生活</div>;case "2":return <div>学习</div>;case "3":return <div>工作</div>;default:break;}
}function Demo() {return <>{getTypeName()}</>;
}export default Demo;
列表渲染 map
类似 vue 的 v-for
- 必须设置独一无二的 key,且不能是 index 和随机数,通常用 id
- key 能提升 react 更新渲染的性能
- map 内箭头函数的返回值用
()包裹
function Demo() {const list = [{id: 1,name: "朝阳",},{id: 2,name: "晚霞",},];return (<><ul>{list.map((item) => (<li key={item.id}>{item.name}</li>))}</ul></>);
}export default Demo;
- 朝阳
- 晚霞
绑定事件
类似 vue 的 v-on (简写@)
- 以 on 开头,接首字母大写的事件名,如点击事件
onClick
function Demo() {function hello() {alert("你好");}return (<><button onClick={hello}>问好</button></>);
}export default Demo;
获取事件对象 e
- 此处的
e是一个React 定义的已解决了跨浏览器的兼容性问题的合成事件。(vue中是原生事件) - 通过 e.nativeEvent 可获取原生事件
function Demo() {function hello(e) {console.log(e);}return (<><button onClick={hello}>问好</button></>);
}
自定义事件传参
需使用箭头函数,否则便是调用函数,会在页面加载时立马执行。
function Demo() {function hello(name) {alert("你好," + name);}return (<><button onClick={() => hello("朝阳")}>问好</button></>);
}export default Demo;
此时要想获取事件对象 e,需在箭头函数传入参数e
function Demo() {function hello(name, e) {console.log("你好," + name);console.log(e);}return (<><button onClick={(e) => hello("朝阳", e)}>问好</button></>);
}export default Demo;
添加样式
行内样式【不推荐】
<div style={{ color: "red" }}>你好</div>
类样式
- 样式写在单独的(如与组件同名的)css 文件中
- 通过 import 导入样式
- 通过
className属性添加样式,注意,不是 class
src\Demo.css
.red {color: red;
}
src\Demo.jsx
import "./Demo.css";const Demo = () => {return <div className="red">你好</div>;
};export default Demo;
相关文章:
react18【系列实用教程】JSX (2024最新版)
为什么要用 JSX? JSX 给 HTML 赋予了 JS 的编程能力 JSX 的本质 JSX 是 JavaScript 的语法扩展,浏览器本身不能识别,需要通过解析工具(如babel)解析之后才能在浏览器中运行。 bable 官网可以查看解析过程 JSX 的语法 …...
Docker 创建网络
问题: 1.需要将多个容器添加到同一个网络. 2.docker-compose.yaml 如果不指定,默认会重新创建一个网卡. 创建网卡 docker network create -d bridge mynet ##-d 指定模式(默认桥接)查看自定义网络信息 docker inspect mynet…...
ASME美国机械工程师学会文献如何查询下载经验分享
一、ASME美国机械工程师学会数据库简介: ASME是世界上最大的技术出版机构之一,制定众多的工业和制造业行业标准。现在ASME拥有工业和制造行业的600项标准和规范,这些标准在全球90多个国家被采用。 ASME数据库包含25种专业期刊,其…...
Spring MVC分页示例
Spring MVC分页示例 分页用于在不同部分显示大量记录。在这种情况下,我们将在一页中显示10、20或50条记录。对于其余记录,我们提供链接。 我们可以在Spring MVC中简单地创建分页示例。在此分页示例中,我们使用MySQL数据库来获取记录。 创建…...
C++基础——继承(上)
一、继承的概念 继承 (inheritance) 机制是面向对象程序设计使代码可以复用的最重要的手段,它允许实现者保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称之为派生类; 继承呈现了面向对象程序设计的层次结构…...
编译安装Python3
1、源码安装 1、安装依赖软件包 yum -y install gcc gcc-c zlib-devel bzip2-devel openssl-devel sqlite-devel readline-devel libffi-devel # python3.7版本安装 2、下载 curl -o python3.6.5.tgz https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz // 或者 w…...
MySQL数据库核心面试题
数据库中的引擎 常用的引擎有InnoDB、MyIsam、Memory三种。 MyIsam:组织形式分为三种: frm文件存储表结构、MyData文件存储表中的数据、MyIndex文件存储表的索引数据。是分开存储的。 Memory:基于内存的,访问速度快࿰…...
Golang | Leetcode Golang题解之第85题最大矩形
题目: 题解: func maximalRectangle(matrix [][]byte) (ans int) {if len(matrix) 0 {return}m, n : len(matrix), len(matrix[0])left : make([][]int, m)for i, row : range matrix {left[i] make([]int, n)for j, v : range row {if v 0 {continu…...
Linux基础知识面试题
1. 请描述Linux操作系统的安装过程,并说明其中的关键步骤。 Linux操作系统的安装过程通常涉及以下几个关键步骤: 准备安装介质:需要从官网或者其他可靠来源下载Linux发行版的ISO镜像文件,并制作一个启动U盘或者烧录到DVD中。现在…...
中国高分辨率国家土壤信息网格基本属性数据集(2010-2018)
中国高分辨率国家土壤信息网格基本属性数据集(2010-2018) 数据介绍 土壤是人类生存和发展的基础,多个联合国可持续发展目标(SDGs)与土壤资源利用和管理直接相关。然而,全球和我国现有土壤信息大多源于历史土…...
数据仓库项目---Day01
文章目录 框架的安装包数据仓库概念项目需求及架构设计项目需求分析项目框架技术选型系统数据流程设计框架版本选型集群资源规划设计 数据生成模块数据埋点主流埋点方式埋点数据上报时机 服务器和JDK准备搭建三台Linux虚拟机(VMWare)编写集群分发脚本xsyncSSH无密登录配置JDK准…...
若依生成树表和下拉框选择树表结构(在其他页面使用该下拉框输入)
1.数据库表设计 生成树结构的主要列是id列和parent_id列,后者指向他的父级 2.来到前端代码生成器页面 导入你刚刚写出该格式的数据库表 3.点击编辑,来到字段 祖籍列表是为了好找到直接父类,不属于代码生成器方法,需要后台编…...
考研数学|李林《880》做不动,怎么办!?看这一篇!
在考研数学的备考过程中,遇到难题是很常见的情况,尤其是当你尝试解决李林880习题集中的问题时。他以其难度和深度著称,旨在帮助考生深入理解数学分析的复杂概念。 如果你在解题过程中感到困难,这并不是你个人的问题,而…...
paddle ocr 版面分析
教程 https://github.com/PaddlePaddle/PaddleOCR/blob/a4b7d3ba4a8333a23bab1fc1472aa18deec211d1/ppstructure/layout/README_ch.md 额外的模型,但是yolov2的模型缺少yml配置文件,找不到 https://github.com/PaddlePaddle/PaddleOCR/blob/main/ppstruc…...
25. K 个一组翻转链表 - 力扣(LeetCode)
基础知识要求: Java:方法、while循环、for循环、if else语句 Python: 方法、while循环、for循环、if else语句 题目: 给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返回修改后的链表。 k 是一个…...
使用 GPT-4-turbo+Streamlit+wiki+calculator构建Math Agents应用【Step by Step】
💖 Brief:大家好,我是Zeeland。Tags: 大模型创业、LangChain Top Contributor、算法工程师、Promptulate founder、Python开发者。📝 CSDN主页:Zeeland🔥📣 个人说明书:Zeeland&…...
[240514] OpenAI 发布 GPT-4o,人机交互的历史性时刻 | 苹果芯片进军服务器剑指AI | 谷歌大会以AI为主
目录 OpenAI 发布 GPT-4o,人机交互的历史时刻苹果芯片进军服务器,剑指生成式 AI2024年谷歌开发者大会将围绕 AI 展开 OpenAI 发布 GPT-4o,人机交互的历史时刻 OpenAI 发布了 GPT-4o,大家一直都想要现在终于等到的语音助手 : 勿需…...
Maximo 在 Automation Script 中访问数据库
在 Automation Script 中我们通常使用 mbo 对象来操作数据,但有时候当数据量较大时,使用 mbo 对象来操作数据会比较慢。这时候,我们可以使用 JDBC 的方式来直接访问数据库,从而提高操作数据的效率。 下面看看使用 JavaScript 脚本…...
gitee 简易使用 上传文件
Wiki - Gitee.com 官方教程 1.gitee 注册帐号 (直接选择初始化选项即可,无需下载git) 2.下载git 安装 http://git-scm.com/downloads 3. 桌面 鼠标右键 或是开始菜单 open git bash here 输入(复制 ,粘贴) 运行…...
iOS Xcode 升级Xcode15报错: SDK does not contain ‘libarclite
一 iOS Xcode 升级Xcode15报错: SDK does not contain libarclite 1.1 报错信息 SDK does not contain libarclite at the path /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/ lib/arc/libarclite_iphonesimulator.a; try increasin…...
PDF怎么转Word不变形?2026保留原排版方法与软件推荐
PDF转Word时遇到排版错乱是许多办公人士的共同困扰。无论是报告、合同还是设计稿,排版混乱往往意味着需要重新手工调整,浪费大量时间。本文整合了2026年最实用的PDF转Word保留原排版方法,以及各类软件工具的详细对比,帮助你快速找…...
终极魔兽争霸3兼容性修复指南:5分钟让经典游戏在现代电脑上重生
终极魔兽争霸3兼容性修复指南:5分钟让经典游戏在现代电脑上重生 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为魔兽争霸3在现代Win…...
【花雕动手做】Aily Blockly 安装 + 环境配置清单 + 避坑指南
项目情况 Aily Blockly 是 Aily Project 推出的开源、AI 驱动的硬件图形化开发 IDE,核心是用 “拖拽积木 自然语言对话 端云协同编译” 大幅降低嵌入式(ESP32/Arduino/STM32)开发门槛,兼顾新手易用与工业级工程化能力。 1、核心…...
N5105 4口2.5g V3 Intel i225 PVE 6.2下的Openclaw安装
一、Ubuntu 26.04安装 1. 从官网上下载ubuntu 26.04 LTS版本 下载地址:Download Ubuntu Desktop | Ubuntu 2. 将下载好的iso文件上传到pve中,登录PVE后台,点击local->ISO镜像->上传 3. 创建虚拟机 其他按默认配置即可。 4. 安装Ubu…...
3分钟快速上手:Hanime1Plugin安卓插件打造纯净动画观影体验终极指南
3分钟快速上手:Hanime1Plugin安卓插件打造纯净动画观影体验终极指南 【免费下载链接】Hanime1Plugin Android插件(https://hanime1.me) (NSFW) 项目地址: https://gitcode.com/gh_mirrors/ha/Hanime1Plugin 你是否厌倦了动画观影时被各种广告弹窗打断&#x…...
B站SEO优化底层逻辑:以用户需求为核心,解锁低成本流量密码
在B站流量竞争日趋激烈的当下,很多创作者陷入“唯算法论”的误区,过度纠结于完播率、互动量等数据,却忽略了SEO优化的本质——匹配用户搜索需求。 一、认知重构:B站SEO的本质是“用户需求匹配”,而非“算法博弈”多数创…...
nuScenes数据集“平替”指南:Mini版够用吗?完整版、Test版到底怎么选?
nuScenes数据集选型实战指南:从Mini版到完整版的决策逻辑 第一次接触nuScenes数据集时,面对动辄几百GB的庞然大物和仅有3.9GB的mini版本,相信不少研究者都会陷入选择困难。这就像站在自助餐厅里,既想品尝所有美味,又担…...
安防摄像头ISP不够用?聊聊MIPI CSI离线模式(Offline Pipeline)与RAW数据缓存的那些事
安防摄像头ISP资源紧张?深度解析MIPI CSI离线模式与RAW数据缓存技术 在智能安防和车载视觉系统快速发展的今天,多摄像头协同工作已成为行业标配。无论是商场监控中的360度无死角覆盖,还是汽车环视系统中的多路影像同步处理,都对图…...
GTA5终极防护与增强指南:YimMenu完整使用教程
GTA5终极防护与增强指南:YimMenu完整使用教程 【免费下载链接】YimMenu YimMenu, a GTA V menu protecting against a wide ranges of the public crashes and improving the overall experience. 项目地址: https://gitcode.com/GitHub_Trending/yi/YimMenu …...
拒绝“拍脑袋“备货:武汉丝路云如何利用Flink实时计算打造跨境供应链的“数据大脑“?
前言 在之前的文章中(如《揭秘跨境供应链的高并发架构》),我们探讨了如何通过微服务架构保证系统在"黑五"大促时不崩溃。但很多客户反馈了一个更深层的问题: "系统确实不崩了,但库存还是积压。要么备货…...
