导航
电话
咨询
地图
顶部
本文讲解如何在 react 渲染的列表中,通过状态管理实现“仅显示被点击项关联的按钮”,避免所有按钮同时出现,核心是用索引(index)精准控制单个元素的显隐。
在 React 中渲染动态列表时,一个常见误区是
正确做法是将状态从布尔值升级为可标识具体项的值,最简单高效的方式是存储被点击项的索引(index)。这样,每个列表项都能基于自身索引与状态比对,决定是否渲染按钮。
以下是优化后的完整实现:
import React, { useState } from 'react'; export function App(props) { // ✅ 状态初始化为 undefined(或 -1),表示无项被选中 const [activeIndex, setActiveIndex] = useState(); const current = [ { name: 'yaba1', age: 20 }, { name: 'yaba2', age: 23 } ]; const handleClick = (index) => { // ✅ 仅更新为当前点击项的索引 setActiveIndex(index); }; return ( {current.map((item, index) => ( {/* ✅ 绑定 index 并传递给点击处理器 */} handleClick(index)} > @@##@@ {item.name} {/* ✅ 仅当当前索引匹配 activeIndex 时才渲染按钮 */} {activeIndex === index && ( Start {item.name} )} ))} ); }
关键要点说明:
通过这一模式,你不仅能解决按钮显示问题,还能复用于展开详情、切换编辑态、高亮选中项等各类“单项响应”交互场景。
# app # 这一 # ui # 处理器 # 还能 # 都能 # 设为 # red # 而非 # 可将 # 对象 # 布尔 # react # 所示 # 你不 # undefined # 如需
相关栏目: 【 行业资讯 】 【 网络运营 】 【 GEO优化 】 【 营销推广 】 【 SEO优化 】 【 技术教程 】 【 代码知识 】 【 AI推广 】
相关推荐: Go 中实现 Python urllib.quote() 功能的等效方法 Windows系统文件被保护机制阻止怎么办_权限不足错误处理方案 Win11怎么设置按流量计费_Win11限制后台流量消耗【网络】 如何在Golang中处理二进制数据_Golang io与encoding/binary二进制操作方法 c++怎么实现高并发下的无锁队列_c++ std::atomic原子变量与CAS操作【详解】 Win11怎么关闭键盘按键音_Win11禁用打字声音反馈【教程】 Windows蓝屏错误0x0000001E怎么修复_KMODEEXCEPTIONNOTHANDLED排查 Python安全爬虫设计_IP代理池与验证码识别策略解析 如何解决Windows时间不准的问题?(自动同步设置) 如何在 Go 中判断变量是否为函数类型 Win11如何设置环境变量 Win11添加和修改系统与用户变量【教程】 Windows10怎么用“讲述人”读屏辅助 Windows10轻松使用开启讲述人朗读屏幕文字帮助视障用户【教程】 php嵌入式日志记录怎么实现_php将硬件数据写入本地日志文件【指南】 Linux怎么设置磁盘配额_Linux系统Quota安装与用户空间限制【教程】 Win11怎么关闭自动维护 Win11禁用系统自动维护功能【优化】 VSC怎样在Linux运行PHP_Ubuntu系统配置步骤【操作】 PHP cURL GET请求:正确设置请求头与身份认证的完整教程 Win11怎么查看wifi信号强度_检测Windows 11无线网络质量方法【详解】 如何在Golang中实现CI/CD流水线自动化测试_Golang持续集成测试执行方法 C#如何序列化对象为XML XmlSerializer用法 Win11怎么打开注册表_Windows 11注册表编辑器启动命令【步骤】 php485返回数据不完整怎么办_php485数据分包重组处理方法【教程】 MAC如何设置网卡MAC地址克隆_MAC终端修改物理地址与环境模拟【教程】 Linux如何挂载新硬盘_Linux磁盘分区格式化与开机自动挂载【指南】 Win11怎么关闭系统推荐内容_Windows11开始菜单布局设置 Windows10如何更改鼠标图标_Win10鼠标属性指针浏览 如何使用 Python 合并文件夹内多个 Excel 文件并避免权限错误 Go 语言标准库为何不提供泛型切片的 Contains 方法? windows系统找不到无线网络怎么办_windows WLAN适配器故障排查 Mac如何将HEIC图片格式转为JPG_Mac批量转换图片【指南】 Windows10怎么卸载预装软件_Windows10预装软件卸载步骤【教程】 Win11屏幕亮度突然变暗怎么解决_自动变暗问题处理 Python对象生命周期管理_创建销毁说明【指导】 Win10如何更改任务栏高度_Windows10解锁任务栏调整大小 Win11文件夹预览图不显示怎么办_Win11缩略图缓存重建修复【教程】 Win11任务栏天气怎么关闭 Win11隐藏天气小组件图标【设置】 c++如何获取map中所有的键_C++遍历键值对提取所有key的方法 Win11笔记本怎么看电池健康度_Win11电池报告生成命令【详解】 Win10系统映像怎么恢复 Win10使用系统映像还原电脑【指南】 Python抽象类与接口设计_规范说明【指导】 PHP的Workerman对架构扩展有啥帮助_应用场景【介绍】 Windows10如何更改桌面图标间距_Win10注册表WindowMetrics修改 php怎么捕获异常_trycatch结构处理运行时错误的技巧【方法】 Windows10如何查看保存的WiFi密码_Win10命令行netsh wlan查询 Windows10如何更改盘符名称_Win10重命名硬盘分区卷标 Python邮件系统自动化教程_批量发送解析与模板应用 Windows10系统怎么查看IP地址_Win10网络连接状态详细信息 Python高性能计算项目教程_NumPyCythonGPU并行加速 Python集合操作技巧_高效去重解析【教程】 如何减少Golang内存碎片化_Golang内存分配与回收优化方法
赣ICP备2024031479号