React中的JSX

本文详细介绍了React中的JSX,包括其基本使用、JavaScript表达式的嵌入、条件渲染和列表渲染,以及样式处理。JSX提供了声明式语法,使得代码更直观,与HTML结构相似,提升了开发效率。文中还探讨了为什么在脚手架中可以直接使用JSX,并提醒读者注意JSX与JavaScript的关系以及在实际应用中的最佳实践,如使用key属性和避免用索引作为key。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1. JSX 的基本使用

1.1 createElement() 的问题

1.2 JSX 简介

1.3 使用步骤

1.4 小结 :

1.5 思考: 为什么脚手架中可以使用JSX 语法?

1.6 注意点

2. JSX 中使用 JavaScript 表达式

2.1 嵌入 JS 表达式

2.2 注意点

3. JSX 的条件渲染 

4. JSX 的列表渲染 

5. JSX 的样式处理

1.行内样式 —— style

2.类名 —— className(推荐)

JSX总结: 总结


 

1. JSX 的基本使用

1.1 createElement() 的问题

1. 繁琐不简洁。
2. 不直观,无法一眼看出所描述的 构。
3. 不优雅,用户体验不爽。

 

 

1.2 JSX 简介

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

优势:声明式语法更加直观、HTML结构相,降低学习成、提升发效率

JSX React 的核心内容。 

 

1.3 使用步骤

1. 使 JSX 语法创 react 元素
// 使用 JSX 语法,创建 react 元素:

const title = <h1>Hello JSX</h1>

2. 使 ReactDOM.render() 方法渲 react 元素到页面中
// 渲染创建好的React元素

ReactDOM.render(title, root)

 

1.4 小结 :

1. 推荐使 JSX 语法创 React 元素
2. JSX 就跟写 HTML 一样,更加直观 友好
3. JSX 语法更能体现 React 的声明式特点( UI 长什 样子)
4. 使用步骤:
// 1 使用JSX创建react元素
const title = <h1>Hello JSX</h1>
// 2 渲染创react元素
ReactDOM.render(title, root)

 

1.5 思考: 为什么脚手架中可以使JSX 语法?

1. JSX 不是标准 ECMAScript 语法,它 ECMAScript 的语法扩展。 

2. 需要使用 babel 编译处理后,才能在浏览器境中使 

3.create-react-app 脚手架中已经默认有该配置,无手动配

4. 编译 JSX 语法的包为 @babel/preset-react

 

1.6 注意点

1. React 元素的属性名使用驼峰命名法
2. 特殊属性名 :class -> className 、for -> htmlFor tabindex -> tabIndex
3. 没有子节点的 React 元素可以用 /> 结束
4. 推荐:使用 小括号包 JSX ,从而避免 JS 中的自动插入分号陷阱。

// 使用小括号包裹 JSX
const dv = (
    <div>Helo JSX</div>
)

 

2. JSX 中使用 JavaScript 表达式

2.1 嵌 JS 表达式

数据存储 JS
语法 { JavaScript 表达式 }
注意:语法中 单大括 ,不是 大括号!
const name = 'Jack'
const dv = (
    <div>你好,我叫:???</div>
)
const name = 'Jack'
const dv = (
    <div>你好,我叫:{name}</div>
)

2.2 注意点

单大括 中可以使用任意 JavaScript 表达式
JSX 自身也是 JS 表达式
注意 :JS 中的对象是一个例外,一般只会出 style 属性中
注意 不能在{}中出现语 (比如 :if/for 等)
const h1 = <h1>我是JSX</h1>

const dv = (
    <div>嵌入表达式:{h1}</div>
)

3. JSX 的条件渲染 

场景 :loading 效果
条件渲染:根据条件渲染特定 JSX 结构
可以使用 if/else 三元运算 逻辑与
const loadData = () => {
    if (isLoading) {
        return <div>数据加载中,请稍后...</div>
    }
    return (
        <div>数据加载完成,此处显示加载后的数据</div>
    )
}

const dv = (
    <div>
        {loadData()}
    </div>
)

 

4. JSX 的列表渲染 

如果要渲染一组数据,应该使用组的 map() 方法 

注意:渲染列表时应该添加 key 属性key 属性的值要保证唯一

原则:map() 遍历谁,就给谁添加 key 属性

注意:尽量避免使用索引号作key

const songs = [
    {id: 1, name: '痴心绝对'},
    {id: 2, name: '像我这样的人'},
    {id: 3, name: '南山南'},
]
const list = (
    <ul>
        {songs.map(item => <li key={item.id}>{item.name}</li>)}
    </ul>
)

5. JSX 的样式处理

1.行内样式 —— style

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

2.类名 —— className(推荐)

<h1 className="title">
    JSX的样式处理
</h1>

JSX总结: 总结

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力学习前端的小陈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值