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

React中Material UI ButtonGroup循环渲染时禁用指定按钮的实现方法

实现方法

Material UI 的 <Button> 组件原生支持 disabled 布尔属性,你只需要在循环渲染时给该属性绑定对应判断逻辑即可,两种常用实现方案如下:

方案1:直接绑定判断逻辑(适合固定禁用规则的场景)

直接在 disabled 属性中判断当前遍历项是否为 Session 对应的选项,非 Session 项全部设为禁用即可,注意 React 循环渲染需要给子元素加唯一 key 属性避免报错:

{projectTypeValues.map(element =>
  <Button 
    key={element.value}
    variant="contained" 
    color="primary"
    disabled={element.value !== 'session'}
  >
    {element.name}
  </Button>
)}

上述代码逻辑为:当元素的value不等于session时,按钮禁用,刚好符合你仅Session按钮可用的需求。

方案2:数组字段控制(适合后续可能调整禁用规则的场景)

你可以先给原数组的每一项添加disabled字段提前配置禁用状态,渲染时直接读取该字段即可,后续调整禁用规则只需要修改数组配置,不用改动渲染逻辑:

// 先给数组添加disabled字段
const projectTypeValues = [
  { name: 'Hour', value: 'hour', disabled: true },
  { name: 'Day', value: 'day', disabled: true },
  { name: 'Session', value: 'session', disabled: false },
  { name: 'project', value: 'project', disabled: true }
]

// 渲染逻辑
{projectTypeValues.map(element =>
  <Button 
    key={element.value}
    variant="contained" 
    color="primary"
    disabled={element.disabled}
  >
    {element.name}
  </Button>
)}

两种方案都可以保证4个按钮全部正常展示,仅Session对应的按钮可交互,其余3个按钮为禁用状态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 16:15:08