React 交互性:过滤与条件渲染

在前文我们学习了 React 中事件处理和状态管理的基础。本节将聚焦两个重要的进阶技巧 ——条件渲染(根据状态动态显示不同 UI)和列表过滤(根据条件筛选数据),这两者是构建交互式应用的核心能力,能让界面根据用户操作呈现更智能的响应。

条件渲染:根据状态动态显示 UI

条件渲染指的是根据组件的状态(或 props)决定是否渲染某个元素,或渲染不同的元素。这就像现实中的 “根据天气决定穿什么衣服”—— 状态不同,结果不同。

条件渲染的常用方法

React 中实现条件渲染的方式灵活多样,可根据场景选择最合适的方法。

1. if/else 语句(适合复杂条件)

在组件的渲染逻辑中使用if/else,根据条件返回不同的 JSX。

import { useState } from 'react';function UserGreeting() {&#x20; return \<h1>欢迎回来!\</h1>;}function GuestGreeting() {&#x20; return \<h1>请先登录。\</h1>;}function Greeting() {&#x20; // 根据isLoggedIn状态决定渲染哪个组件&#x20; const \[isLoggedIn, setIsLoggedIn] = useState(false);&#x20; let greeting;&#x20; if (isLoggedIn) {&#x20;   greeting = \<UserGreeting />;&#x20; } else {&#x20;   greeting = \<GuestGreeting />;&#x20; }&#x20; return (&#x20;   \<div>&#x20;     {greeting}&#x20;     \<button onClick={() => setIsLoggedIn(!isLoggedIn)}>&#x20;       {isLoggedIn ? '退出' : '登录'}&#x20;     \</button>&#x20;   \</div>&#x20; );}
2. 逻辑与运算符(&&,适合简单显示 / 隐藏)

当需要 “满足条件时渲染某个元素,不满足时不渲染”,可使用&&运算符 —— 左侧条件为true时,渲染右侧元素;否则不渲染。

import { useState } from 'react';function Notification() {&#x20; const \[hasUnread, setHasUnread] = useState(true);&#x20; return (&#x20;   \<div>&#x20;     \<h1>消息中心\</h1>&#x20;     {/\* 有未读消息时显示提示 \*/}&#x20;     {hasUnread && \<p>您有3条未读消息!\</p>}&#x20;     \<button onClick={() => setHasUnread(false)}>标记为已读\</button>&#x20;   \<

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/90715.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/90715.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/90715.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学习嵌入式的第二十九天-数据结构-(2025.7.16)线程控制:互斥与同步

以下是您提供的文本内容的排版整理版本。我已根据内容主题将其分为几个主要部分&#xff08;互斥锁、信号量、死锁、IPC进程间通信、管道操作&#xff09;&#xff0c;并使用清晰的结构组织信息&#xff1a;代码片段用代码块格式&#xff08;指定语言为C&#xff09;突出显示。…

COZE官方文档基础知识解读第六期 ——数据库和知识库

一&#xff0c;一键直连数据上传&#xff0c;存储&#xff0c;使用 火山方舟的数据库和知识库的核心&#xff0c;都是基于开源的数据库产品&#xff08;mysql&#xff0c;向量数据库等&#xff09;&#xff0c;将数据库交互的逻辑封装在后端&#xff0c;与前端做耦合&#xff0…

生产环境使用云服务器(centOS)部署和使用MongoDB

部署MongoDB流程1. ​安装MongoDB​版本选择建议​CentOS 7​&#xff1a;推荐MongoDB 4.4.x&#xff08;兼容性好&#xff09;​CentOS 8/9​&#xff1a;建议最新稳定版&#xff08;如6.0&#xff09;&#xff0c;需单独安装mongodb-database-tools安装步骤1.添加官方仓库# 添…

思博伦第二到三层测试仪(打流仪)TestCenter 2U硬件安装及机箱加电_双极未来

&#xff08;1&#xff09;安装板卡&#xff1a;上图中共 4 个红色线框&#xff0c;上边两个红色线条框住的是机箱的左右两侧导轨&#xff0c;下边两条红色 线条框住的是板卡拉手条&#xff08;用于承载板卡PCB的金属板&#xff09;左右两边的边沿。 安装时将拉手条两边的边沿与…

【华为】笔试真题训练_20250611

本篇博客旨在记录自已的笔试刷题的练习&#xff0c;里面注有详细的代码注释以及和个人的思路想法&#xff0c;希望可以给同道之人些许帮助。本人也是小白&#xff0c;水平有限&#xff0c;如果文章中有什么错误或遗漏之处&#xff0c;望各位可以在评论区指正出来&#xff0c;各…

新浪微博APP v14.5.0:连接世界的社交媒体平台

新浪微博APP 是一款广受欢迎的社交媒体应用程序&#xff0c;凭借其强大的功能和丰富的社交生态&#xff0c;成为用户获取信息、表达观点、互动交流的重要平台。最新版 v14.5.0 内置了微博助手 v2.3.0&#xff0c;进一步提升了用户体验和功能多样性。 软件功能 1. 发布微博 用…

静态枚举返回(简单实现字典功能)

枚举缓存策略的实现与应用 通过静态Map缓存枚举类的Class对象&#xff0c;避免每次请求时重复反射加载。核心实现是一个包含枚举类名与对应Class映射的Registry类&#xff1a; public class EnumRegistry {private static final Map<String, Class<?>> ENUM_MAP …

深分页性能问题分析与优化实践

在日常测试工作中&#xff0c;我们经常会遇到分页查询接口&#xff0c;例如&#xff1a; GET /product/search?keyword&pageNum1&pageSize10乍看之下&#xff0c;这样的分页接口似乎并无性能问题&#xff0c;响应时间也很快。但在一次性能压测中&#xff0c;我们复现了…

LeetCode——1957. 删除字符使字符串变好

通过万岁&#xff01;&#xff01;&#xff01; 题目&#xff1a;给你一个字符串&#xff0c;然后让你删除几个字符串&#xff0c;让他变成好串&#xff0c;好串的定义就是不要出现连续的3个一样的字符。思路&#xff1a;首先就是要遍历字符串。我们将要返回的字符串定义为ret&…

Aerospike与Redis深度对比:从架构到性能的全方位解析

在高性能键值存储领域&#xff0c;Aerospike与Redis是两款备受关注的产品。Redis以其极致的单机性能和丰富的数据结构成为主流选择&#xff0c;而Aerospike则凭借分布式原生设计和混合存储架构在大规模场景中崭露头角。本文将从架构设计、数据模型、性能表现、扩展性等核心维度…

Linux命令速查手册

一、命令格式与辅助工具类别符号/命令示例说明基本格式commandls -a /home命令 选项 参数管道符ls -lless重定向>df -h > disk_usage.txt覆盖写入文件>>echo "New" >> notes.txt追加写入文件2>ls non_exist 2> error.txt错误输出重定向快捷…

net-snmp添加自定义mib树

首先我们把前面mib2c生成的文件修改 下面重新做了个简单点的MIB树 -- -- -- MIB generated by MG-SOFT Visual MIB Builder Version 6.0 Build 88 -- Saturday, July 26, 2025 at 09:24:54 --ARHANGELSK-GLOBAL-REG DEFINITIONS :: BEGINIMPORTSenterprises, OBJECT-TYPE, M…

【动态规划-斐波那契数列模型】理解动态规划:斐波那契数列的递推模型

算法相关知识点可以通过点击以下链接进行学习一起加油&#xff01;动态规划是一种解决最优化问题的强大技术&#xff0c;通过将问题分解为子问题并逐步求解来实现高效计算。斐波那契数列是动态规划中经典的应用之一&#xff0c;其递推关系非常适合用动态规划进行优化。通过动态…

微信小程序 自定义带图片弹窗

1. 微信小程序 自定义带图片弹窗1.1. 实现思路使用官方组件实现图片模态弹窗。首先找到官方文档&#xff1a;​显示模态弹窗的API wx.showModal(OBJECT)wx.showModal参数介绍发现并没有设置图片的参数&#xff0c;但是这是一个API&#xff0c;但是组件呢&#xff1f;我并没有在…

私有化大模型架构解决方案构建指南

内容概要本指南旨在为企业提供私有化大模型架构解决方案的全面构建路径&#xff0c;帮助其在保障数据隐私的同时提升业务效率。我们将系统解析关键环节&#xff0c;包括安全部署策略设计、模型训练核心技术、持续优化机制构建以及知识管理实践路径。此外&#xff0c;指南还涵盖…

面试150 查找和最小的K对数字

思路1 超时法&#xff1a;通过两个循环记录三元组[num1,num2,num1num2]然后通过num1num2从小到大进行排序&#xff0c;然后返回前K个对数中的前两个数即可。 class Solution:def kSmallestPairs(self, nums1: List[int], nums2: List[int], k: int) -> List[List[int]]:if n…

vscode目录,右键菜单加入用VSCode打开文件和文件夹(快速解决)(含删除)(脚本)

1.创建文本文件 在桌面右键单击&#xff0c;选择“新建” > “文本文档”&#xff0c;将其命名为“vscode.txt”2.复制代码内容3.修改文件扩展名 右键单击“vscode.txt”文件&#xff0c;选择“重命名”&#xff0c;将文件扩展名从.txt改为.reg&#xff0c;使其成为“vscode…

Chart.js 柱形图详解

Chart.js 柱形图详解 引言 在数据可视化领域&#xff0c;柱形图是一种非常常见的图表类型&#xff0c;它能够直观地展示不同类别或组的数据之间的比较。Chart.js 是一个基于 HTML5 Canvas 的开源库&#xff0c;它提供了一系列的图表绘制功能&#xff0c;其中包括柱形图。本文将…

沉浸式文旅新玩法-基于4D GS技术的真人数字人赋能VR体验升级

线下沉浸式剧场与 LBE VR 相结合&#xff0c;会碰撞出什么样的火花&#xff1f;本次 PICO 视频、东方演艺集团与火山引擎一起&#xff0c;将沉浸式演出《只此周庄》的部分场景复刻到了 VR 世界&#xff0c;让用户在虚拟的古代周庄夜市里&#xff0c;体验了古老的故事以及精彩纷…

C程序内存布局详解

C程序内存布局详解 1. 内存布局概述 C程序在内存中分为以下几个主要区域&#xff08;从低地址到高地址&#xff09;&#xff1a; 代码段&#xff08;.text&#xff09;只读数据段&#xff08;.rodata&#xff09;初始化数据段&#xff08;.data&#xff09;未初始化数据段&…