javascript - 单击外部关闭 Persistent Material UI Drawer

标签 javascript reactjs material-ui

我正在尝试在 Material UI React 中使用 Drawer 组件。我希望 Drawer 组件 中的状态不会在关闭 Drawer 组件时丢失,因此我在 Drawer 组件中传递了 variant="persistent"

现在,问题是 Persistent Drawer 默认情况下不提供 backdrop functionality ,这与 temporary 抽屉不同,因此我无法关闭它在外面点击。 我也尝试了 {{ModalProps={{ onBackdropClick: this.toggleDrawer }} }} 但仍然无法正常工作。

有解决办法吗?

Material UI 版本:1.0.0

CodeSandbox link

最佳答案

为了搜索者登陆这个问题。如果您在使用 ClickAwayListener 时遇到问题并且没有使用 variant='persistent'。试试这个:为 ModalProps onBackdropClick

提供切换功能
<Drawer
  open={drawerIsOpen}
  ModalProps={{ onBackdropClick: this.toggleDrawer }}
>
  <MenuItem>drawer item 1</MenuItem>
</Drawer>

2021 年 7 月更新:

我最近将 material-ui/core 更新到版本 4.12.1 并注意到 onBackdropClick 已被弃用。相反,他们添加了对此功能的原生支持,onClose 函数将在抽屉外单击时自动调用,现在它给出了调用它的原因:

签名: function(event: object, reason: string) => void

event:回调的事件源。

原因:可以是:“escapeKeyDown”、“backdropClick”

请参阅此处示例:https://material-ui.com/api/modal/向下滚动到 onBackDropClicked - 它对抽屉的作用与对

改为这样做:

<Drawer
  open={drawerIsOpen}
  onClose={{ (ev, reason) => this.setState({ drawerIsOpen: false }) }}
>
  <MenuItem>drawer item 1</MenuItem>
</Drawer>

关于javascript - 单击外部关闭 Persistent Material UI Drawer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54060096/

相关文章:

javascript - 在没有状态的情况下使用 React

javascript - 当用户单击外部图像时尝试更改标记的图标

javascript - Facebook 分享链接计数

javascript - 类型错误 : Cannot read property 'length' of undefined in Commerce JS when accessing cart

reactjs - React + Material-UI + Typescript : Inherit props from button to add different variants

reactjs - 我需要在 Material-ui DataGrid 中渲染 JSX 元素

reactjs - 如何在 Cypress 中测试 React Material UI Drawer 组件属性值

javascript - 如何在safari上触发<a>的点击事件

JavaScript 输入查询字符串不接受空格制表符而是字母

javascript - React router 3 无法渲染