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

React中如何实现点击按钮仅显示对应元素的age值?

问题解决:点击按钮仅展示对应人员的年龄

你的问题在于用了一个全局布尔状态showAge,所有按钮点击都会切换这个状态,导致所有年龄同时显示/隐藏。要实现点击单个按钮只显示对应年龄,需要把状态改成存储当前要显示年龄的人员标识(比如姓名),而非简单的布尔值。

修改后的代码如下:

const App = () => {
  // 初始值设为null,表示没有要显示的年龄
  const [showAgeFor, setShowAgeFor] = useState(null);
  const people = [
    {
      name: "Jeje",
      age: 4,
    },
    {
      name: "Nene",
      age: 5,
    },
    {
      name: "Tom",
      age: 8,
    },
  ];
  return (
    <div>
        {people.map((person) => (
          // 给每个列表元素添加唯一key,符合React渲染规范
          <div key={person.name}>
            <div onClick={() => {
              // 点击时切换:若当前已显示该人员年龄则隐藏,否则显示
              setShowAgeFor(showAgeFor === person.name ? null : person.name);
            }}>
              <p data-id={person.name}>{person.name}</p>
            </div>
            // 仅当状态匹配当前人员姓名时,才渲染年龄
            {showAgeFor === person.name && <p className="px-3">{person.age}</p>}
          </div>
        ))}
    </div>
  );
};

export default App;

核心修改说明:

  • 将全局布尔状态showAge替换为showAgeFor,存储目标人员的姓名,初始值为null
  • 点击逻辑改为:判断当前状态是否为当前人员姓名,以此切换显示/隐藏状态
  • 显示条件精准匹配当前人员的姓名,确保只有被点击的人员年龄会展示
  • 为列表项添加唯一key属性,避免React渲染警告

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 05:22:04