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

news/2024/9/25 9:28:42/

在这里插入图片描述

文章目录

    • 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/news/1530225.html

相关文章

链路追踪在分布式项目中有什么作用?

文章目录 请求追踪性能分析故障排查服务依赖关系分析全链路监控数据驱动的决策支持常用链路追踪工具 链路追踪&#xff08;Link Tracking 或 Distributed Tracing&#xff09;是一种用于监控和观察分布式系统中的请求流动和性能的技术。在现代微服务架构中&#xff0c;特别是涉…

动态路由---OSPF协议基础

一、动态路由 1.1、定义 动态路由是指在网络通信过程中&#xff0c;路由器根据当前网络的状态和拓扑结构等信息&#xff0c;动态计算出最优的数据传输路径。这一过程依赖于路由器之间的路由信息交换和路由表的维护。当网络拓扑结构发生变化时&#xff0c;如链路故障或节点增减…

USB开启ADB设置流程

第一步&#xff1a;设置里打开adb调试选项 源码路径&#xff1a;packages/apps/Settings/src/com/android/settings/development/AdbPreferenceController.java public void onAdbDialogConfirmed() {writeAdbSetting(true); } writeAdbSetting 函数所在源码路径&#xff1a…

【PyTorch】数据读取和处理

数据读取机制DataLoader与Dataset 数据处理过程 DataLoader torch.utils.data.DataLoader 功能&#xff1a;构建可迭代的数据装载器 dataset&#xff1a;Dataset类&#xff0c;决定数据从哪里读取及如何读取batchsize&#xff1a;批大小num_works&#xff1a;是否多进程读取…

《AI办公类工具表格处理系列之二——Excell-AI》

一.简介 官网:https://excelly-ai.io/index.html 将文本转换成Excel或Google sheets公式 二.功能介绍 1. 智问公式 功能描述:当用户想要写一个公式但不确定如何下手时,可以通过“智问公式”功能,简单描述自己的需求,AI将自动生成相应的Excel公式。例如,用户可以输入“…

【JVM】一篇文章彻底理解JVM的组成,各组件的底层实现逻辑

文章目录 JVM 的主要组成部分类加载器&#xff08;Class Loader&#xff09;1. 加载&#xff08;Loading&#xff09;2. 链接&#xff08;Linking&#xff09;3. 初始化&#xff08;Initialization&#xff09; Execution Engine&#xff08;执行引擎&#xff09;1. 解释器&…

爬虫技术初步自学

目的 本篇文章实际上自学爬虫技术的学习一份学习笔记&#xff0c;希望可以对后学的小白起到帮助&#xff0c;也希望得到大佬的指点&#xff0c;若有错漏希望大佬指出。 初步认知 爬虫实际上是一个计算机程序。开发爬虫程序的常用语言是Python。&#xff08;Python我已经在五…

Linux 进程2

环境变量 再Linux操作系统中一切皆文件&#xff0c;这个环境变量自然也是一个文件&#xff0c;它的作用是辅助我们使用操作系统还可以辨识我们是什么用户(一般用户&#xff0c;root用户)。 env是读取完整环境变量的指令&#xff0c;里面记录了许多我登录操作系统所用的用户的信…