导航
电话
咨询
地图
顶部
本文讲解如何在 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推广 】
相关推荐: 如何解决Windows字体显示模糊的问题?(ClearType设置) php文件怎么变mp4保存_php输出视频流保存为mp4操作【操作】 如何在Golang中定义接口_抽象方法和多态实现 Win11怎么看电池循环次数_Win11笔记本电池寿命检测【命令】 Win11怎么设置默认终端应用_Windows11开发者选项终端 Win11怎么清理C盘系统日志_Win11清理系统日志文件【步骤】 Win11鼠标灵敏度怎么调 Win11鼠标指针移动速度设置【教程】 Win11截图快捷键是什么_Win11自带截图工具使用技巧【汇总】 PHP 中如何在函数内持久化修改引用变量的指向 php下载安装选zip还是msi格式_两种安装包对比【教程】 Windows10电脑怎么查看硬盘通电时间_Win10使用工具检测磁盘健康 php能控制zigbee模块吗_php通过串口与cc2530 zigbee通信【介绍】 如何使用Golang搭建Web开发环境_快速启动HTTP服务 Win10如何卸载微软拼音输入法 Win10只保留一个输入法【教程】 如何关闭Win10自动更新更新_Win10系统自动更新双重关闭技巧 Windows10系统怎么查看防火墙状态_Win10安全中心网络保护 Windows 11如何查看系统激活密钥_Windows 11使用CMD或PowerShell命令找回Product Key Python项目维护经验_长期演进说明【指导】 Windows笔记本无法进入睡眠模式怎么办?(电源疑难解答) Win11怎么关闭触控板_Win11笔记本禁用触摸板快捷键 微信短链接怎么还原php_用浏览器开发者工具抓包获取【方法】 Win11怎么更改计算机名_Windows11系统信息重命名设备教程 MAC怎么截图并快速编辑_MAC自带截图快捷键与标注工具使用【方法】 Win11怎样安装微信开发者工具_Win11安装开发者工具教程【步骤】 如何使用Golang log记录不同级别日志_Golang log Println与Fatal示例 如何使用Golang捕获测试日志_Golang testing日志记录方法 XSLT怎么生成动态的HTML属性名和标签名 Windows服务启动类型恢复方法_错误修改导致的系统服务异常 Win11如何更新显卡驱动 Win11检查和安装设备驱动程序【方法】 Win10如何更改网络连接_Windows10以太网属性IP配置 Win10电脑C盘红了怎么清理_Windows10系统盘深度瘦身指南 Mac如何与安卓手机传文件_Mac和Android设备互通【必备工具】 如何高效获取循环末次生成的 NumPy 数组最后一个元素(无需额外循环) mac怎么看硬盘大小_MAC查看磁盘存储空间与文件占用【详解】 Python类装饰器使用_元编程解析【教程】 如何在Golang中实现CI/CD流水线自动化测试_Golang持续集成测试执行方法 Win11怎样安装搜狗输入法_Win11安装搜狗输入法教程【步骤】 Win10如何设置双wan路由器 Win10双wan路由器设置方法【指南】 Windows10蓝屏代码DPC_WATCHDOG_VIOLATION_Win10死机修复指南 c++的static关键字有什么用 静态变量和静态函数的应用场景【教程】 如何使用Golang实现基本类型比较_Golang比较操作符使用方法 Win11怎么硬盘分区 Win11新建磁盘分区详细教程【步骤】 Win11怎么退出高对比度模式_Win11取消反色显示快捷键【修复】 Mac电脑进水了怎么办_MacBook进水后紧急处理方法【必看】 Win11视频默认播放器怎么改_Win11关联第三方播放器【步骤】 c# 在ASP.NET Core中管理和取消后台任务 Win11怎么修改DNS服务器 Win11设置DNS加速网络【指南】 Python网络日志追踪_请求定位解析【教程】 如何使用Golang sort排序切片_Golang sort排序方法示例 Mac自带的词典App怎么用_Mac添加和使用多语言词典【技巧】
赣ICP备2024031479号