JSX看着一篇足以入门

2023-10-23 14:15
文章标签 入门 一篇 jsx 足以 看着

本文主要是介绍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

这篇关于JSX看着一篇足以入门的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/268373

相关文章

从入门到精通详解Python虚拟环境完全指南

《从入门到精通详解Python虚拟环境完全指南》Python虚拟环境是一个独立的Python运行环境,它允许你为不同的项目创建隔离的Python环境,下面小编就来和大家详细介绍一下吧... 目录什么是python虚拟环境一、使用venv创建和管理虚拟环境1.1 创建虚拟环境1.2 激活虚拟环境1.3 验证虚

Java List 使用举例(从入门到精通)

《JavaList使用举例(从入门到精通)》本文系统讲解JavaList,涵盖基础概念、核心特性、常用实现(如ArrayList、LinkedList)及性能对比,介绍创建、操作、遍历方法,结合实... 目录一、List 基础概念1.1 什么是 List?1.2 List 的核心特性1.3 List 家族成

c++日志库log4cplus快速入门小结

《c++日志库log4cplus快速入门小结》文章浏览阅读1.1w次,点赞9次,收藏44次。本文介绍Log4cplus,一种适用于C++的线程安全日志记录API,提供灵活的日志管理和配置控制。文章涵盖... 目录简介日志等级配置文件使用关于初始化使用示例总结参考资料简介log4j 用于Java,log4c

史上最全MybatisPlus从入门到精通

《史上最全MybatisPlus从入门到精通》MyBatis-Plus是MyBatis增强工具,简化开发并提升效率,支持自动映射表名/字段与实体类,提供条件构造器、多种查询方式(等值/范围/模糊/分页... 目录1.简介2.基础篇2.1.通用mapper接口操作2.2.通用service接口操作3.进阶篇3

Python自定义异常的全面指南(入门到实践)

《Python自定义异常的全面指南(入门到实践)》想象你正在开发一个银行系统,用户转账时余额不足,如果直接抛出ValueError,调用方很难区分是金额格式错误还是余额不足,这正是Python自定义异... 目录引言:为什么需要自定义异常一、异常基础:先搞懂python的异常体系1.1 异常是什么?1.2

Python实现Word转PDF全攻略(从入门到实战)

《Python实现Word转PDF全攻略(从入门到实战)》在数字化办公场景中,Word文档的跨平台兼容性始终是个难题,而PDF格式凭借所见即所得的特性,已成为文档分发和归档的标准格式,下面小编就来和大... 目录一、为什么需要python处理Word转PDF?二、主流转换方案对比三、五套实战方案详解方案1:

Spring WebClient从入门到精通

《SpringWebClient从入门到精通》本文详解SpringWebClient非阻塞响应式特性及优势,涵盖核心API、实战应用与性能优化,对比RestTemplate,为微服务通信提供高效解决... 目录一、WebClient 概述1.1 为什么选择 WebClient?1.2 WebClient 与

Spring Boot 与微服务入门实战详细总结

《SpringBoot与微服务入门实战详细总结》本文讲解SpringBoot框架的核心特性如快速构建、自动配置、零XML与微服务架构的定义、演进及优缺点,涵盖开发环境准备和HelloWorld实战... 目录一、Spring Boot 核心概述二、微服务架构详解1. 微服务的定义与演进2. 微服务的优缺点三

从入门到精通详解LangChain加载HTML内容的全攻略

《从入门到精通详解LangChain加载HTML内容的全攻略》这篇文章主要为大家详细介绍了如何用LangChain优雅地处理HTML内容,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录引言:当大语言模型遇见html一、HTML加载器为什么需要专门的HTML加载器核心加载器对比表二

从入门到进阶讲解Python自动化Playwright实战指南

《从入门到进阶讲解Python自动化Playwright实战指南》Playwright是针对Python语言的纯自动化工具,它可以通过单个API自动执行Chromium,Firefox和WebKit... 目录Playwright 简介核心优势安装步骤观点与案例结合Playwright 核心功能从零开始学习