JSX看着一篇足以入门

JSX 介绍

学习目标: 能够理解什么是 JSX,JSX 的底层是什么
概念: JSX 是 javaScriptXML(HTML) 的缩写,表示在 JS 代码中书写 HTML 结构
作用: 在 React 中创建 HTML 结构(页面 UI 结构)
优势:
 1. 采用类似 HTML 的语法,降低学习成本,会 HTML 就会 JSX
 2. 充分利用 JS 自生的可编程能力创建 HTML 结构
注意: JSX 并不是标准的 JS 语法,是 JS 的语法扩展,浏览器默认是不识别的,脚手架中内置的@babel/plugin-transform-react-jsx 包,用来解析该语法,将声明式的 JSX 解析为命令式的函数调用
在这里插入图片描述

JSX 中使用 js 表达式

学习目标: 能够在 JSX 中使用表达式
语法:
{JS 表达式}

function App() {// 1.识别常规变量const name = '跟着老惠学前端'// 2.原生js方法调用const age = () => {return 25}//3.三元运算符const flag = truereturn (<div className="App">{name}{age()}{flag ? '真棒' : '真菜'}</div>)
}export default App

可以使用的表达式
 1.字符串、布尔值、数值、null、undefined、object([]/{})
 2.算数运算(1+2)、字符串方法(“abcde”.split(‘’))、数组方法([‘a’,‘b’].join(‘-’))
 3. fn()
特别注意
if 语句/switch-case 语句/变量声明语句,这些叫做语句,不是表达式,不能书写在{}中!!!

// 1.识别常规变量
const name = '跟着老惠学前端'
// 2.原生js方法调用
const age = () => {return 25
}
//3.三元运算符
const flag = true
// 其他的自行尝试...
return (<div className="App">{name}<br />{age()}<br />{flag ? '真棒' : '真菜'}<br /></div>
)

在这里插入图片描述

JSX 列表渲染

学习目标: 能够在 JSX 中实现列表渲染

页面的构建离不开重复的列表结构,比如歌曲列表,商品列表等等,Vue 中用的式 v-for 做到这一点,react 中又该如何实现呢?

实现: 使用数组的 map 方法
案例:

// 技术方案:map 重复渲染的是哪个模板 就return那个
// 注意事项:遍历列表时同样需要一个类似number/string不可重复的key 提高diff性能
// key仅仅在内部使用,不会出现在真实的dom结构
const stu = [{ id: 1, name: '小明', age: 18 },{ id: 2, name: '李华', age: 19 },{ id: 3, name: '小红', age: 17 },{ id: 4, name: '小芳', age: 17 },
]return (<div className="App"><ul>{stu.map((item) => (<li key={item.id}>姓名:{item.name},年龄:{item.age}</li>))}</ul></div>
)

运行结果:
在这里插入图片描述

JSX 条件渲染

学习目标: 能够在 JSX 中实现条件渲染
作用: 根据是否满足条件生成 HTML 结构,比如 Loading 效果
实现: 可以使用三元运算符或者逻辑&&(与)运算符
实例:

function App() {// 条件渲染// 技术方案:1.三元表达式(常用) 2.逻辑&&(与)运算const flag = truereturn (<div className="App">1.三元表达式<br/>(1).简单版:{flag ? <span>this is span</span>:null}<br/>(2).复杂版(可用小括号包裹起来):{flag ? (<div><span>this is span2</span></div>) : null}2.&& (前面为true则显示,false则不显示))<br/>{true && <span>this is span</span>}</div>);
}export default App;

运行结果:
在这里插入图片描述

JSX 模板精简原则

学习目标: 使模板中的逻辑跟简洁
实现: 复杂的多分枝的逻辑收敛为一个函数,通过一个专门的函数来写分支逻辑,模板中只负责调用
实例:

// 有一个状态type有1,2,3三种
// 1 展示 h1
// 2 展示 h2
// 3 展示 h3const title = (type) =>{if(type === 1){return <h1>this is h1</h1>}else if(type === 2){return <h2>this is h2</h2>}else if(type === 3){return <h3>this is h3</h3>}
}return (<div className="App">{title(1)}{title(3)}{title(2)}</div>);
}export default App;

运行结果:
在这里插入图片描述

JSX 样式处理

学习目标: 能够在 JSX 中实现 CSS 样式处理
 1. 行内样式
实现: 在元素身上绑定一个 style 样式
  - 行内样式 · style

function APP(){return (<div className="App"><div style={{color:'red',fontSize:'10px'}}>this is div</div></div>)
}
export default App

  - 行内样式·style·优化写法

function App() {const divStyle1 = {color:'blue',fontSize:'20px'}return (<div className="App"><div style={divStyle1}>this is div</div></div>)
}export default App;

 2. 类名样式
实现: 在元素身上绑定一个 className 属性即可
  1. 创建一个 css 样式表文件 app.css

.colors {color: peru;font-size: 40px;
}

  2. JSX 中引入 css 文件

// 使用import引入样式表文件
import './app.css'

  3. 在元素上用 className 属性绑定 class 样式

    <div className='colors'>类名样式</div>

运行结果:
在这里插入图片描述

JSX 动态类名控制

学习目标: 根据需求判断是否显示某个类名的样式
实现: 使用三元表达式或逻辑&&运算

import './app.css';
function App() {const color1 = trueconst color2 = truereturn (<div className="App">1. 三元:<div className={color1?'colors':''}>类名样式</div>2. &&(与)<div className={color2 && 'colors'}>类名样式</div></div>)
}export default App;

运行结果:
在这里插入图片描述

JSX 注意事项

学习目标: 掌握 JSX 实际开发过程中的一些注意事项
  1. JSX 必须具有一个根节点,如果没有根节点可以使用<></>(幽灵节点)代替根节点将所有元素包裹起来

function App() {return (<><div className="App">1</div><div className={htmlFor(i in 10)}>2</div></>)
}export default App;

  2. 所有标签必须形成闭合(

),成对闭合或者自闭( )和都可以
  3. JSX 中的语法更加贴近 JS 语法,属性名采用驼峰命名法 class -> className; for -> htmlFor
  4. JSX 支持多行(换行),如果需要换行,需使用 ()包裹,防止出现 Bug

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

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

相关文章

监控易一体化运维:打造机房环境监控的卓越典范

随着信息技术的飞速发展&#xff0c;机房作为企业数据和业务的中心&#xff0c;其运行状态和管理的重要性日益凸显。为确保机房的稳定性和可靠性&#xff0c;越来越多的企业选择使用一体化运维管理软件来进行实时监控。在这方面&#xff0c;监控易品牌提供了一款全面而高效的机…

VM虚拟机 13.5 for Mac

VMware Fusion Pro for Mac是一款强大的虚拟机软件&#xff0c;可以在Mac操作系统中创建、运行和管理多个虚拟机&#xff0c;使用户可以在一台Mac电脑上同时运行多个操作系统和应用程序。 以下是VMware Fusion Pro for Mac的主要特点&#xff1a; 1. 支持多种操作系统&#xff…

【数据结构】线性表(九)队列:链式队列及其基本操作(初始化、判空、入队、出队、存取队首元素)

文章目录 一、队列1. 定义2. 基本操作 二、顺序队列三、链式队列0. 链表1. 头文件2. 队列结构体3. 队列的初始化4. 判断队列是否为空5. 入队6. 出队7. 存取队首元素8. 主函数9. 代码整合 堆栈Stack 和 队列Queue是两种非常重要的数据结构&#xff0c;两者都是特殊的线性表&…

【Java 进阶篇】深入浅出:Bootstrap 轮播图

在现代网页设计中&#xff0c;轮播图是一个常见的元素。它们可以用于展示图片、广告、新闻、产品或任何您希望吸引用户注意力的内容。要实现一个轮播图&#xff0c;您通常需要一些复杂的HTML、CSS和JavaScript代码&#xff0c;这对于初学者来说可能会感到困难。但幸运的是&…

React环境初始化

环境初始化 学习目标&#xff1a; 能够独立使用React脚手架创建一个React项目 1.使用脚手架创建项目 官方文档&#xff1a;(https://create-react-app.bootcss.com/)    - 打开命令行窗口    - 执行命令      npx create-react-app projectName    说明&#xff1a…

四、网络请求与路由

一、网络请求 1、Axios请求 Axios是一个基于promise的网络请求库 &#xff08;1&#xff09;安装 npm install --save axios&#xff08;2&#xff09;引入 import axios from "axios"全局引入 import axios from "axios" import { createApp } from …

Github 2FA绑定中国+86手机号码实现两步验证

GitHub宣布&#xff0c;到 2023 年底&#xff0c;所有用户都必须要启用双因素身份验证 (2FA)&#xff0c;不能只用密码. GitHub开启2FA后&#xff0c;除了输入密码外&#xff0c;还需要通过一次性密码&#xff08;OTP&#xff09;等方式做第二级身份验证&#xff0c;才能成功登…

靶机 DC_1

DC_1 信息搜集 存活检测 详细扫描 网页目录扫描 网页信息搜集 cms 为 Drupal 漏洞利用 使用 msf 搜索 drupal 的漏洞 启动 msfconsole搜索 search drupal尝试编号为 0 的漏洞 失败 利用编号为 1 的漏洞 use 1查看需要配置的选项 show options设置目标 ip set rhost 10…

监控易101:全方位解读运维的核心功能与特性

在数字化时代&#xff0c;企业IT环境的复杂性日益增加&#xff0c;给运维工作带来了前所未有的挑战。面对这一情况&#xff0c;监控易作为一款一体化运维监控管理平台&#xff0c;凭借其全面的监控覆盖、智能的告警机制、强大的数据分析工具以及灵活的扩展能力&#xff0c;赢得…

【Linxu工具】:vim使用及简单配置

朋友们、伙计们&#xff0c;我们又见面了&#xff0c;本期来给大家解读一下有关Linux工具&#xff1a;vim的使用&#xff0c;如果看完之后对你有一定的启发&#xff0c;那么请留下你的三连&#xff0c;祝大家心想事成&#xff01; C 语 言 专 栏&#xff1a;C语言&#xff1a;从…

不知道怎么选CRM系统?看这篇就够了

CRM客户管理系统近年来已经从简单的客户管理软件发展成为了帮助企业运营发展的工具。它能够帮助企业优化业务流程、提高客户转化率、获得更多业绩。那么企业在选择CRM系统时有什么要点吗&#xff1f; 1、明确是否有自动化功能 自动化功能可以自动处理那些手动且琐碎的销售流程…

【Docker从入门到入土 4】使用Harbor搭建Docker私有仓库

私有仓库 一、Harbor简介1.1 什么是Harbor?1.2 Harbor的特性1.3 Harbor和docker registry的关系1.4 Harbor的构成1.4 Harbor 配置文件中的两类参数1.4.1 所需参数1.4.2 可选参数 二、Harbor部署2.1 部署Docker-Compose服务2.2 部署 Harbor 服务Step1 下载或上传 Harbor 安装程…

看得懂的——数据库中的“除”操作

通过一个例子来解释数据库中的“除”操作 R➗S其实就是判断关系R中X各个值的象集Y是否包含关系S中属性Y的所有值 求解步骤 第一步 找出关系R和关系S中相同的属性&#xff0c;即Y属性。在关系S中对Y做投影&#xff08;即将Y列取出&#xff09;&#xff1b;所得结果如下&#x…

设计模式:策略模式(C#、JAVA、JavaScript、C++、Python、Go、PHP)

简介&#xff1a; 策略模式&#xff0c;它是一种行为型设计模式&#xff0c;它定义了算法族&#xff0c;分别封装起来&#xff0c;让它们之间可以互相替换。策略模式让算法的变化独立于使用算法的客户&#xff0c;降低了耦合&#xff0c;增加了系统的可维护性和可扩展性。 策…

Jetty Client IllegalArgumentException: Buffering capacity 2097152 exceeded

使用Jetty Http Client 接收较大数据时发生异常 Request request client.POST(api_url) .timeout(TIMEOUT, TimeUnit.SECONDS) .content(new BytesContentProvider(imageData), "image/*"); ContentResponse resp request.send(); if(resp.getStatus()200){ …

Integer和int

Integer和int 1.定义2. 区别2.1 数据类型2.2 可空性2.2.1 int的可空性2.2.2 Integer的可空性 2.3 效率和性能2.4 自动装箱和拆箱2.4.1 自动装箱2.4.2 自动拆箱2.4.3 注意事项 3. 比较 1.定义 int是Java中的一种基本数据类型&#xff0c;用于表示整数。它是Java语言中最常用的数…

同为科技(TOWE)机架PDU产品在IDC数据中心机房建设中的应用

当今社会互联网发展迅速&#xff0c; 随着带宽需求的提升&#xff0c; 网络的保密性、安全性的要求就越来越迫切。PDU(Power Distribution Unit) 是 PDU具备电源分配和管理功能的电源分配管理器。PDU电源插座是多有设备运行的第一道也是最为密切的部件&#xff0c; PDU的好坏直…

【漏洞复现】panalog日志审计系统任意用户创建漏洞和后台命令执行

漏洞描述 panalog为北京派网软件有限公司,一款流量分析,日志分析管理的一款软件。存在任意用户创建漏洞和后台命令执行漏洞,可先通过任意用户创建,然后进行后台命令执行,获取服务器权限。 免责声明 技术文章仅供参考,任何个人和组织使用网络应当遵守宪法法律,遵守公…

Linux下的IMX6ULL——环境搭建与软件安装(一)

前言&#xff1a; 从今天开始我们就要用到IMX6ULL这块开发板进行linux的学习了&#xff0c;对于初学者&#xff0c;下载好资料、搭建好开发环境后&#xff0c;按照下面顺序学习即可&#xff1a; 先应用&#xff0c;再驱动&#xff0c;最后做项目。应用、驱动、项目这三个慢慢走…

【safetensor】介绍和基础代码

Hugging Face, EleutherAI, StabilityAI 用的多 介绍 文件形式 header&#xff0c;体现其特性。如果强行将pickle或者空软连接 打开&#xff0c;会出现报错。解决详见&#xff1a;debug 连接到其他教程结构和参数 安装 with pip:Copied pip install safetensors with con…