React入门 jsx学习笔记

news2024/10/7 16:15:32

一、JSX介绍

概念:JSX是 JavaScript XML(HTML)的缩写,表示在 JS 代码中书写 HTML 结构

作用:在React中创建HTML结构(页面UI结构)

优势:

  1. 采用类似于HTML的语法,降低学习成本,会HTML就会JSX
  2. 充分利用JS自身的可编程能力创建HTML结构

 JSX 并不是标准的 JS 语法,是 JS 的语法扩展,浏览器默认是不识别的,脚手架中内置的 @babel/plugin-transform-react-jsx 包,用来解析该语法,将声明式解析成命令式

二、JSX基础

1、JSX中使用js表达式

在JSX中使用表达式

//1识别常规变量
//2原生js方法调用
//3三元运算符 常用
const name = "joy booy";
const getAge=()=>{return 17}
const FLAG=true

function App() {
  return <div className="App">
    {name}
    {getAge()}
    {FLAG?'666':'888'}
    </div>;
}

export default App

可以使用的表达式:

字符串、数组、布尔值,null \ undefined \ object([ ] / { })

1+2、'abc'.split(' ')、['a', 'b'].join('-')

fn()   都可以写在{ }中 

if 语句 / switch-case 语句 / 变量声明语句,这些叫做语句,不是表达式,不能出现在 {} 中!!

PS:export default App :用于从脚本文件中导出单个类、函数,没有这句,其他文件中就无法导入这个对象,无效弃用

 2、jsx列表渲染

页面的构建离不开重复的列表结构,比如歌曲列表,商品列表等,vue中用的是v-for,react这边如何实现呢?

使用数组的map方法

// 来个列表
//技术方案:map重复渲染的是那个模板,就return谁
//注意:遍历列表时同样需要一个类型为number/string不可重复的key,提高diff性能
//key仅仅在内部使用,不会出现在真实的dom结构中
const songs = [
  { id: 1, name: "痴心绝对" },
  { id: 2, name: "粉色海洋" },
  { id: 3, name: "夏天" },
];

function App() {
  return (
    <div className="App">
      <ul>
        {songs.map((item) => (
          <li>{item.name}</li>
        //或map(song=> <li key={song.id}>{song.name}</li>)
        ))}
      </ul>
    </div>
  );
}

export default App;

 

3、JSX条件渲染

满足一定条件才渲染,根据是否满足条件生成HTML结构,比如Loading效果

可以使用 三元运算符 或   逻辑与(&&)运算符

//技术方案:三元表达式常用  逻辑&&运算
// 来个布尔值
const flag = true
function App() {
  return (
    <div className="App">
      {/* 条件渲染字符串 */}
      {flag ? 'react真有趣' : 'vue真有趣'}
      {/* 条件渲染标签/组件 */}
      {flag && <span>this is span</span> }
    </div>
  )
}
export default App

4、JSX模板精简原则

原则:模板中的逻辑尽量保持精简

复杂的多分支的逻辑 收敛为一个函数 通过一个专门的函数来写分支逻辑 模板中只负责调用

const getHtag = (type) => {
  if (type === 1) {
    return <h1>this is h1</h1>;
  }
  if (type === 2) {
    return <h2>this is h2</h2>;
  }
  if (type === 3) {
    return <h3>this is h3</h3>;
  }
};

function App() {
  return (
    <div className="App">
      {getHtag(1)}
      {getHtag(2)}
      {getHtag(3)}
    </div>
  );
}

export default App;

 

5、JSX样式处理

行内样式--在元素身上绑定一个style属性即可

function App() {
  return (
    < div className="App">
     <span style={{color:'red',fontSize:'30px'}}>this is nb span</span> 

    </div>
  )
}
export default App;

 或者,模板精简化

const style = {
  color: 'blue',
  fontSize: "10px"
};

function App() {
  return (
    < div className="App">
     <span style={style}>this is nb span</span> 

    </div>
  )
}
export default App;

 

类名样式--在元素身上绑定一个className属性即可

新建个.cs文件,用来给App.js使用

 

import './app.css';
const style = {
  color: "blue",
  fontSize: "10px"
}

function App() {
  return (
    <div className="App">
      <span style={style}>this is nb span</span>
      <span className='active'>测试类名样式</span>
    </div>
  )
}

export default App

 

6、JSX动态类名控制

动态控制active类名,满足条件才有

return (
    <div className="App">
      <span style={style}>this is nb span</span>
      <span className='active'>测试类名样式</span>
      <span className={showTitle ?  'active':' '}>动态控制</span>
    </div>
    
  )

 

 7、注意事项

掌握JSX在实际应用时的注意事项

  1. JSX必须有一个根节点,如果没有根节点,可以使用<></>(幽灵节点)替代
  2. 所有标签必须形成闭合,成对闭合或者自闭合都可以
  3. JSX中的语法更加贴近JS语法,属性名采用驼峰命名法  class -> className          for -> htmlFor
  4. JSX支持多行(换行),如果需要换行,需使用() 包裹,防止bug出现

 

//父节点示例

 

幽灵节点<></> 

 幽灵节点<></> 消失

 下一节做一个练习案例

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

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

相关文章

chatserver服务器开发笔记

chatserver服务器开发笔记 1 chatserver2 开发环境3 编译 1 chatserver 集群聊天服务器和客户端代码&#xff0c;基于muduo、redis、mysql实现。 学习于https://fixbug.ke.qq.com/ 本人已经挂github&#xff1a;https://github.com/ZixinChen-S/chatserver/tree/main 需要该项…

ASR 语音识别接口封装和分析

这个文档主要是介绍一下我自己封装了 6 家厂商的短语音识别和实时流语音识别接口的一个包&#xff0c;以及对这些接口的一个对比。分别是&#xff0c;阿里&#xff0c;快商通&#xff0c;百度&#xff0c;腾讯&#xff0c;科大&#xff0c;字节。 zxmfke/asrfactory (github.c…

神秘的ip地址8.8.8.8,到底是什么类型的DNS服务器?

下午好&#xff0c;我的网工朋友。 DNS&#xff0c;咱们网工配置网络连接或者路由器时&#xff0c;高低得和这玩意儿打交道吧。 它是互联网中用于将人类可读的域名&#xff08;例如http://www.example.com&#xff09;转换为计算机可理解的IP地址&#xff08;例如192.0.2.1&a…

机器学习中基本的数据结构说明

数据维度或数据结构 当我们在机器学习或深度学习的领域内处理数据&#xff0c;我们通常会遇到四种主要的数据结构&#xff1a;标量&#xff0c;向量&#xff0c;矩阵和张量。理解这些基本数据结构是非常重要的&#xff0c;因为它们是机器学习算法和神经网络的核心。下面是对这…

AssetBundle总结

文章目录 目的打包过程打包时的分组策略和压缩方式资源的载入和卸载其它&#xff1a;Manifest、校验、视图工具思维导图 前言&#xff1a; 大佬文章链接&#xff08;据此总结的&#xff09; 目的 避免软件因资源占用空间太大&#xff0c;导致运行缓慢 避免每次更新资源&#…

【STM32】高效开发工具CubeMonitor快速上手

工欲善其事必先利其器。拥有一个辅助测试工具&#xff0c;能极大提高开发项目的效率。STM32CubeMonitor系列工具能够实时读取和呈现其变量&#xff0c;从而在运行时帮助微调和诊断STM32应用&#xff0c;类似于一个简单的示波器。它是一款基于流程的图形化编程工具&#xff0c;类…

Michael.W基于Foundry精读Openzeppelin第26期——ERC1820Implementer.sol

Michael.W基于Foundry精读Openzeppelin第26期——ERC1820Implementer.sol 0. 版本0.1 ERC1820Implementer.sol 1. 目标合约2. 代码精读2.1 _registerInterfaceForAddress(bytes32 interfaceHash, address account) internal2.2 canImplementInterfaceForAddress(bytes32 interf…

Java的反射机制、Lambda表达式和枚举

Java的反射机制、Lambda表达式和枚举 文章目录 Java的反射机制、Lambda表达式和枚举1.反射机制反射的概念、用途、优缺点反射相关的类及使用&#xff08;重要&#xff01;&#xff01;&#xff09;相关类Class类&#xff1a;代表类实体&#xff0c;表示类和接口Field类&#xf…

URLSearchParams:JavaScript中的URL查询参数处理工具

文章目录 导言&#xff1a;一、URLSearchParams的来历二、URLSearchParams的作用三、URLSearchParams的方法和属性四、使用示例五、注意事项六、结论参考资料 导言&#xff1a; 在Web开发中&#xff0c;处理URL查询参数是一项常见的任务。为了简化这一过程&#xff0c;JavaScr…

论文阅读——Adversarial Eigen Attack on Black-Box Models

Adversarial Eigen Attack on Black-Box Models 作者&#xff1a;Linjun Zhou&#xff0c; Linjun Zhou 攻击类别&#xff1a;黑盒&#xff08;基于梯度信息&#xff09;&#xff0c;白盒模型的预训练模型可获得&#xff0c;但训练数据和微调预训练模型的数据不可得&#xff…

龙迅LT86102UXE产品概括,HDMI2.0转一分二HDMI2.0/1.4,支持音频剥离,支持4K60HZ

LT86102UXE 1. 一般说明 龙迅 LT86102UXE HDMI2.0 分路器具有符合 HDMI2.0/1.4 规范的 1&#xff1a;2 分路器、最大 6Gbps 高速数据速率、自适应均衡 RX 输入和预加重 TX 输出&#xff08;用于支持长电缆应用&#xff09;、内部 TX 通道交换以实现灵活的 PCB 布线。 LT86102…

A Survey for In-context Learning

A Survey for In-context Learning 摘要&#xff1a; 随着大语言模型(LLMs)能力的增长&#xff0c;上下文学习(ICL)已经成为一个NLP新的范式&#xff0c;因为LLMs仅基于几个训练样本让内容本身增强。现在已经成为一个新的趋势去探索ICL来评价和extrapolate LLMs的能力。在这篇…

vue3+element-plus表格默认排序default-sort失效问题

场景 在使用动态数据渲染的场景&#xff0c;el-table设置默认属性default-sort失效。 原因 el-table的default-sort属性是针对静态数据的&#xff0c;如果是动态数据&#xff0c;default-sort则无法监听到。 案例&#xff1a;静态数据 <template><el-table:data&…

一文分析多少杠杆最高

在进行加杠杆操作时&#xff0c;合约产品通常会有一定的杠杆比例限制&#xff0c;这是由监管机构或交易平台设定的。杠杆比例限制的目的是为了控制风险&#xff0c;避免过度杠杆化导致的潜在损失过大。 不同的交易平台和合约产品可以有不同的杠杆比例限制。一般来说&#xff0…

堆叠注入进阶--(buuctf-随便注、GYCTF-black_list)【多方法详解】

了解一下 堆叠注入基础知识及其他题目&#xff1a; SQL-堆叠注入 终于有时间来填填坑了 Buuctf-随便注 算是堆叠注入中非常经典的题目了。 随便试试就能看到黑名单&#xff1a; 没了select&#xff0c;其实大概率就是堆叠注入 先探测一下&#xff1a; 1;show databases;…

Struts2一次请求参数问题的记录

最近&#xff0c;一次前端正常请求&#xff0c;但后台出现请求参数值的变化&#xff0c;导致报错&#xff0c;问题如下&#xff1a; 从入参request中查看请求参数&#xff0c;是一个Json字符串&#xff0c;其中有个description的键值对&#xff1b; 但是&#xff0c;接下来调用…

分布式websocket解决方案

1、websocket问题由来 websocket基础请自行学习,本文章是解决在分布式环境下websocket通讯问题。 在单体环境下,所有web客户端都是连接到某一个微服务上,这样消息都是到达统一服务端,并且也是由一个服务端进行响应,所以不会出现问题。 但是在分布式环境下,我们很容易发现…

【Vue】Vue2创建移动端项目实战教程,创建移动端项目保姆级教程,设置axios,utils工具包,vue.fonfig.js配置项 (下)

系列文章目录 这里是创建移动端项目 【Vue】Vue2.x创建项目全程讲解&#xff0c;保姆级教程&#xff0c;手把手教&#xff0c;Vue2怎么创建项目&#xff08;上&#xff09; 【Vue】Vue2创建移动端项目实战教程&#xff0c;创建移动端项目保姆级教程&#xff0c;接上一篇创建Vue…

解压版 MySQL 数据库的安装与配置

目录 1 下载2 安装3 配置3.1 添加环境变量3.2 新建配置文件3.3 初始化MySQL3.4 注册MySQL服务3.5 启动MySQL服务3.6 修改默认账户密码 4 登录MySQL5 卸载MySQL 安装环境:Win10 64位 软件版本:MySQL 5.7.24 解压版 1 下载 点击链接 进入如下界面 ❗️注意&#xff1a; 我们一般不…

JavaEE初阶:多线程 - 编程

1.认识线程 我们在之前认识了什么是多进程&#xff0c;今天我们来了解线程。 一个线程就是一个 "执行流". 每个线程之间都可以按照顺讯执行自己的代码. 多个线程之间 "同时" 执行 着多份代码. 引入进程这个概念&#xff0c;主要是为了解决并发编程这样的…