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

MUI技术问题:点击禁用的MenuItem时如何保持Menu不关闭?

解决禁用MenuItem点击后Menu关闭的问题

你遇到的情况是因为禁用的MenuItem虽然不会触发自身的onClick事件,但mousedown事件依然会冒泡到Menu组件,从而触发Menu的关闭逻辑,所以之前用onClick里的stopPropagation没用。

最简单的解决方法是给禁用的MenuItem添加onMouseDown事件,在事件处理里同时阻止默认行为和事件冒泡:

<Menu>
  <MenuItem 
    disabled 
    onMouseDown={(e) => {
      e.preventDefault();
      e.stopPropagation();
    }}
  > 
    Disabled 
  </MenuItem>
  <MenuItem> Enabled </MenuItem>
</Menu>

为什么这么做:

  • e.preventDefault():阻断浏览器的默认点击行为,避免触发Menu内置的关闭逻辑
  • e.stopPropagation():阻止事件向上传递到Menu组件,确保Menu不会收到关闭触发的信号

如果不想用这种方法,也可以通过手动控制Menu的open状态来实现,但上面的方式不需要额外维护状态变量,更简便。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 01:42:35