react之jsx基础(2)高频使用场景

devtools/2024/10/19 19:38:36/

在这里插入图片描述

文章目录

    • 1. **组件定义**
    • 2. **条件渲染**
    • 3. **列表渲染**
    • 4. **事件处理**
    • 5. **嵌套组件**
    • 6. **表单处理**
    • 7. **样式应用**
    • 8. **处理子组件**


在 React 中,JSX 的使用是非常广泛和高频的。以下是一些常见的高频使用场景及其示例,帮助你更好地理解 JSX 的实际应用:

1. 组件定义

JSX 最常见的用途之一是定义组件的结构。组件可以是函数组件或类组件,通常会使用 JSX 来描述组件的 UI。

函数组件示例:

function Greeting(props) {return <h1>Hello, {props.name}!</h1>;
}

类组件示例:

class Greeting extends React.Component {render() {return <h1>Hello, {this.props.name}!</h1>;}
}

2. 条件渲染

在 JSX 中,你可以使用 JavaScript 表达式来实现条件渲染。常用的方法是使用三元运算符或逻辑与运算符 (&&),根据条件渲染不同的 UI 元素。

三元运算符示例:

function Welcome(props) {return (<div>{props.isLoggedIn ? <UserProfile /> : <LoginButton />}</div>);
}

逻辑与运算符示例:

function Notifications(props) {return (<div>{props.unreadCount > 0 && <span>You have {props.unreadCount} unread messages.</span>}</div>);
}

3. 列表渲染

当需要渲染一个列表时,JSX 可以通过 map() 函数来生成一个数组的元素。每个元素通常需要一个唯一的 key 属性。

function ItemList(props) {const items = props.items;return (<ul>{items.map((item, index) => (<li key={index}>{item}</li>))}</ul>);
}

4. 事件处理

JSX 允许你在元素上设置事件处理器,如 onClickonChange 等。这些事件处理器通常会触发对应的 JavaScript 函数。

function Button() {function handleClick() {alert('Button clicked!');}return <button onClick={handleClick}>Click me</button>;
}

5. 嵌套组件

组件之间可以嵌套,从而创建复杂的 UI 结构。JSX 允许你轻松地将一个组件嵌套在另一个组件中。

function App() {return (<div><Header /><MainContent /><Footer /></div>);
}

6. 表单处理

在 JSX 中,你可以创建表单,并处理用户输入。React 通过受控组件(controlled components)来管理表单元素的状态。

受控组件示例:

class Form extends React.Component {constructor(props) {super(props);this.state = { value: '' };this.handleChange = this.handleChange.bind(this);this.handleSubmit = this.handleSubmit.bind(this);}handleChange(event) {this.setState({ value: event.target.value });}handleSubmit(event) {alert('A name was submitted: ' + this.state.value);event.preventDefault();}render() {return (<form onSubmit={this.handleSubmit}><label>Name:<input type="text" value={this.state.value} onChange={this.handleChange} /></label><button type="submit">Submit</button></form>);}
}

7. 样式应用

JSX 允许你使用内联样式或类名来应用样式。内联样式是一个 JavaScript 对象,而类名则像在 HTML 中一样使用 className 属性。

内联样式示例:

function StyledComponent() {const style = { color: 'blue', fontSize: '20px' };return <div style={style}>This is a styled component</div>;
}

使用类名示例:

function StyledComponent() {return <div className="my-style">This is a styled component</div>;
}

8. 处理子组件

有时组件会接受子组件作为其内容,这称为 “插槽” 或 “children”。在 JSX 中,子组件可以被直接嵌入到父组件中。

function Layout(props) {return (<div className="layout"><header>Header</header><main>{props.children}</main><footer>Footer</footer></div>);
}// 使用 Layout 组件
function App() {return (<Layout><p>This is the main content.</p></Layout>);
}

这些是 JSX 的一些常见使用场景,通过掌握这些基本用法,你可以更高效地构建和管理 React 组件。

您好,我是肥晨。
欢迎关注我获取前端学习资源,日常分享技术变革,生存法则;行业内幕,洞察先机。


http://www.ppmy.cn/devtools/117730.html

相关文章

SRE的必修课:学会看账单

做为一个有点经历的SRE工程师&#xff0c;每当入职一家新的公司时&#xff0c;财务账单是必看的资料之一&#xff0c;而日常工作中&#xff0c;每周或者每月&#xff0c;也必然会抽出时间看一下账单报告&#xff0c;为方便获取想要的账单&#xff0c;还曾基于业务架构开发专门的…

【小程序】微信小程序课程 -1 安装与配置

目录 1 微信小程序概述 1.1 什么是微信小程序 1.2 注册微信小程序账号 1.3 微信小程序配置 1.4 小程序开发流程 1.5 小程序成员 2、创建微信小程序项目 2.1 创建项目流程 2.2 创建项目 2.3 本地开发支持http 3 项目目录结构 3.1项目目录结构 3.1.1 目录介绍 3.1.2…

甘蔗茎节检测系统源码分享

甘蔗茎节检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vis…

LLM - 使用 XTuner 指令微调 多模态大语言模型(InternVL2) 教程

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/142528967 免责声明&#xff1a;本文来源于个人知识与公开资料&#xff0c;仅用于学术交流&#xff0c;欢迎讨论&#xff0c;不支持转载。 XTuner…

Unity DOTS系列之IJobChunk来迭代处理数据

最近DOTS发布了正式的版本, 我们来分享一下System中如何在System中使用IJobChunk来迭代处理World中的数据&#xff0c;方便大家上手学习掌握Unity DOTS开发。 再回顾一次基于ArcheType Chunk内存管理 我们先再次回顾以下基于ArcheType的Chunk内存管理。每一类Entity都是由一些…

【rust】 基于rust编写wasm,实现markdown转换为html文本

文章目录 背景转换预览核心代码前置依赖rustup换源cargo换源中科大 wasm-pack安装 背景 尝试用rust编写一款markdown转html的插件&#xff0c;通过wasm给html使用&#xff0c;不得不说体积挺小&#xff0c;约200K&#xff0c; 比go的wasm起步2MB看着舒服点。 不过go的配置和换…

计算机毕业设计之:云中e百货微信小程序设计与实现(源码+文档+定制)

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…

Leetcode面试经典150题-322.零钱兑换

给你一个整数数组 coins &#xff0c;表示不同面额的硬币&#xff1b;以及一个整数 amount &#xff0c;表示总金额。 计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额&#xff0c;返回 -1 。 你可以认为每种硬币的数量是无限的。 示…