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

ReactJS中如何以符合React规范的方式实现不同div显隐切换

React 状态驱动的标准实现方案

React 是声明式UI框架,开发时不需要手动操作真实DOM修改样式,所有UI变化都由组件状态驱动,状态更新后React会自动完成DOM的修改,这也是React和原生JS直接操作DOM写法最核心的区别。

核心实现逻辑

  • 引入React内置的useState Hook定义组件状态,用来标记当前需要展示的div
  • 按钮点击时只需要修改状态值,不需要查询DOM节点修改样式
  • JSX中根据状态值动态控制div的显示隐藏,同时修复原代码中return部分多根节点的语法错误

完整可运行代码

import { useState } from 'react';

export default function Provider() {
  // 状态值默认设为'first',即页面初始加载展示第一个div
  const [activeTab, setActiveTab] = useState('first');

  return (
    <>
      <div style={{ display: activeTab === 'first' ? 'block' : 'none' }}>
        First Div Content
      </div>
      <div style={{ display: activeTab === 'second' ? 'block' : 'none' }}>
        Second Div Content
      </div>
      <button onClick={() => setActiveTab('first')}>First Button</button>
      <button onClick={() => setActiveTab('second')}>Second Button</button>
    </>
  );
}

可选优化:条件渲染

如果你不需要保留隐藏div的DOM节点(比如隐藏的div里有表单不需要保留输入值),可以直接用条件渲染,非激活状态的div不会被挂载到DOM树,性能更好:

import { useState } from 'react';

export default function Provider() {
  const [activeTab, setActiveTab] = useState('first');

  return (
    <>
      {activeTab === 'first' && <div>First Div Content</div>}
      {activeTab === 'second' && <div>Second Div Content</div>}
      <button onClick={() => setActiveTab('first')}>First Button</button>
      <button onClick={() => setActiveTab('second')}>Second Button</button>
    </>
  );
}

注意:原代码中return后的JSX有多个同级根元素,不符合React JSX语法要求,上面的示例用<></>空标签(React Fragment)做了包裹,不会额外生成DOM节点。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 22:42:14