如何关闭material UI上下文菜单,而不显示默认的上下文菜单?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何关闭material UI上下文菜单,而不显示默认的上下文菜单?相关的知识,希望对你有一定的参考价值。

我试图使用材质UI菜单在div上显示一个上下文菜单,如 https:/material-ui.comcomponentsmenus#context-menu。

这工作我可以右键单击,它显示。

然而,显示时的material-ui上下文菜单是 在菜单后面注入一个透明的div,覆盖整个屏幕。. 这意味着任何进一步的点击都会被这个元素拦截。当检测到左键点击时,该元素似乎会关闭菜单,但会移动并继续显示出 同一上下文菜单 如果你在页面上的其他地方右键单击,包括上下文菜单无关的地方。

有什么办法可以在没有这个透明div的情况下显示菜单,因为它正在从我的页面中移除控制?

你可以在例子中看到这个动作。https:/material-ui.comcomponentsmenus#context-menu。右键点击文本,然后右键点击其他任何地方(当菜单仍在显示时),你可以触发菜单出现在整个页面上,甚至在应用栏中,菜单选项没有意义。

答案

我试着这样做。

export default function MenuPopupState() 
  return (
    <PopupState variant="popover" popupId="demo-popup-menu">
      popupState => 
        const menuProps = bindMenu(popupState);
        return (
          <React.Fragment>
            <Button
              variant="contained"
              color="primary"
              ...bindTrigger(popupState)
            >
              Open Menu
            </Button>
            <Menu
              ...menuProps
              onContextMenu=event => 
                event.preventDefault();
              
              onMouseDown=e => 
                menuProps.onClose();
              
            >
              <MenuItem onClick=popupState.close>Cake</MenuItem>
              <MenuItem onClick=popupState.close>Death</MenuItem>
            </Menu>
          </React.Fragment>
        );
      
    </PopupState>
  );

https:/codesandbox.iosmaterial-demo-szpbr?file=demo.js。

以上是关于如何关闭material UI上下文菜单,而不显示默认的上下文菜单?的主要内容,如果未能解决你的问题,请参考以下文章

为 SelectField 显示空白菜单项的正确方法是啥(material-ui,react)

无法在我的导航菜单中显示实际的 Material-ui 图标

React Material-UI 下拉菜单不起作用

如何在 Material-UI 菜单中使用自定义功能组件

如何使用material-ui框架? [关闭]

如何使用 JSS 设置 Material-UI 菜单弹出框的样式?