MUI技术问题:点击禁用的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
相关产品推荐
相关产品推荐

