当前位置: 首页 > news >正文

React 条件判断

 在 React 中,可以通过 JavaScript 的条件语句来动态渲染组件或元素。

以下是几种常用的在 React 中处理条件渲染的方法:

1. 使用 if 语句

在 render 方法或函数组件的返回值中使用 if 语句来决定渲染内容。

实例

import React from 'react';
import ReactDOM from 'react-dom/client';class MyComponent extends React.Component {render() {const isLoggedIn = this.props.isLoggedIn;let content;if (isLoggedIn) {content = <h1>Welcome back!</h1>;} else {content = <h1>Please sign up.</h1>;}return (<div>{content}</div>);}
}const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(<MyComponent isLoggedIn={true} />);

2. 使用三元运算符

在 JSX 中,可以使用三元运算符进行简洁的条件渲染。

实例

import React from 'react';
import ReactDOM from 'react-dom/client';const MyComponent = (props) => {const isLoggedIn = props.isLoggedIn;return (<div>{isLoggedIn ? <h1>Welcome back!</h1> : <h1>Please sign up.</h1>}</div>);
};const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(<MyComponent isLoggedIn={true} />);

3. 使用逻辑与 (&&) 运算符

在 JSX 中,可以使用逻辑与运算符来进行条件渲染。如果条件为 true,则渲染后面的元素。

实例

import React from 'react';
import ReactDOM from 'react-dom/client';const MyComponent = (props) => {const isLoggedIn = props.isLoggedIn;return (<div>{isLoggedIn && <h1>Welcome back!</h1>}{!isLoggedIn && <h1>Please sign up.</h1>}</div>);
};const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(<MyComponent isLoggedIn={true} />);

4. 使用 switch 语句

在需要处理多个条件时,可以在 render 方法中使用 switch 语句。

实例

import React from 'react';
import ReactDOM from 'react-dom/client';class MyComponent extends React.Component {render() {const userRole = this.props.userRole;let content;switch (userRole) {case 'admin':content = <h1>Welcome, Admin!</h1>;break;case 'user':content = <h1>Welcome, User!</h1>;break;case 'guest':content = <h1>Welcome, Guest!</h1>;break;default:content = <h1>Who are you?</h1>;}return (<div>{content}</div>);}
}const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(<MyComponent userRole="admin" />);

小结

  • if 语句:适合在 render 方法或函数组件的返回值中使用来决定渲染内容。
  • 三元运算符:适合在 JSX 中进行简洁的条件渲染。
  • 逻辑与 (&&) 运算符:适合在 JSX 中条件渲染,当条件为 true 时渲染元素。
  • switch 语句:适合处理多个条件,进行不同内容的渲染。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • MySql审计平台
  • MacOS Anaconda 安装教程及虚拟环境创建
  • 吴恩达:如何系统学习机器学习?
  • Java开发工具IDEA
  • 宿主机与容器(docker)之间的数据共享
  • celery使用
  • HDFS 之 文件流
  • proteus仿真c51单片机(四)双机串口通信(电路设计及代码)
  • 八 信息系统基础知识(考点篇)试题
  • Obsidian插件安装与开发
  • Thinkphp框架漏洞(附修复方法)
  • 【QT】鼠标按键事件 - QMouseEvent QKeyEvent
  • 在psotgres中的gist和gin索引介绍
  • RM小陀螺技术经验与思考
  • 无法访问jakarta.servlet.http.HttpServletRequest
  • JS中 map, filter, some, every, forEach, for in, for of 用法总结
  • Computed property XXX was assigned to but it has no setter
  • input实现文字超出省略号功能
  • Intervention/image 图片处理扩展包的安装和使用
  • JavaScript设计模式系列一:工厂模式
  • JS基础篇--通过JS生成由字母与数字组合的随机字符串
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • Object.assign方法不能实现深复制
  • PAT A1017 优先队列
  • Redis 中的布隆过滤器
  • Spring Cloud Alibaba迁移指南(一):一行代码从 Hystrix 迁移到 Sentinel
  • SpringCloud集成分布式事务LCN (一)
  • 工作中总结前端开发流程--vue项目
  • 构建二叉树进行数值数组的去重及优化
  • 那些年我们用过的显示性能指标
  • 前端面试题总结
  • 前端学习笔记之观察者模式
  • 深入浅出webpack学习(1)--核心概念
  • 通信类
  • 为视图添加丝滑的水波纹
  • AI又要和人类“对打”,Deepmind宣布《星战Ⅱ》即将开始 ...
  • !!【OpenCV学习】计算两幅图像的重叠区域
  • # 职场生活之道:善于团结
  • #gStore-weekly | gStore最新版本1.0之三角形计数函数的使用
  • $.proxy和$.extend
  • (DFS + 剪枝)【洛谷P1731】 [NOI1999] 生日蛋糕
  • (NSDate) 时间 (time )比较
  • (PWM呼吸灯)合泰开发板HT66F2390-----点灯大师
  • (待修改)PyG安装步骤
  • (独孤九剑)--文件系统
  • (二)十分简易快速 自己训练样本 opencv级联lbp分类器 车牌识别
  • (附源码)ssm考生评分系统 毕业设计 071114
  • (附源码)计算机毕业设计ssm本地美食推荐平台
  • (离散数学)逻辑连接词
  • (删)Java线程同步实现一:synchronzied和wait()/notify()
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • (轉貼) 資訊相關科系畢業的學生,未來會是什麼樣子?(Misc)
  • .NET Core 控制台程序读 appsettings.json 、注依赖、配日志、设 IOptions
  • .net6 core Worker Service项目,使用Exchange Web Services (EWS) 分页获取电子邮件收件箱列表,邮件信息字段
  • .NET6 命令行启动及发布单个Exe文件