You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React点击按钮仅展示对应单条JSON数据记录的实现问题

解决React中点击按钮仅展示对应单条记录的问题

你的问题根源在于用了一个全局的布尔状态visible控制所有条目的显示/隐藏,点击任意按钮都会触发所有条目同步变化。要实现点击对应按钮只展示当前条目的title,需要把状态改成跟踪当前激活的条目ID,而非单个布尔值。

修改后的实现代码:

// 将状态从单个布尔值改为存储激活的ID,初始值设为null表示无条目激活
const [activeId, setActiveId] = React.useState(null);

return (
  <tbody> 
    {currentTableData.map(item => (
      // map循环必须添加唯一key,用item.id作为key是React最佳实践
      <div key={item.id}>
        <button 
          onClick={() => {
            // 点击时判断:若当前激活的是该条目ID则取消激活,否则激活该条目
            setActiveId(prevId => prevId === item.id ? null : item.id);
          }}
        >
          {/* 根据当前条目是否激活切换按钮文字 */}
          {activeId === item.id ? 'Hide' : 'Show'}
        </button>
        {/* 仅当当前条目ID等于激活ID时,渲染对应的title */}
        {activeId === item.id && <div>{item.title}</div>}
      </div>
    ))}
  </tbody>
)

关键改动说明:

  • 状态类型调整:把visible(布尔值)换成activeId(存储ID或null),精准定位需要显示的单条记录。
  • 点击逻辑优化:通过比对激活ID与当前条目ID,控制单条目的显示/隐藏,避免全局触发所有条目状态变化。
  • 渲染条件修改:仅在activeId匹配当前条目ID时渲染title,实现单条独立控制。
  • 添加key属性:map渲染列表时添加唯一key,符合React性能优化要求。

内容的提问来源于stack exchange,提问作者SAJAD

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 08:20:32