跳到内容
+

点击外部监听器

Click-Away Listener 组件检测点击事件何时发生在它的子元素外部。

简介

Click-Away Listener 是一个实用组件,用于监听其子元素外部的点击事件。(请注意,它只接受一个子元素。)

这对于像 Popper 这样的组件非常有用,当用户点击文档中的任何其他位置时,它应该关闭。

Click-Away Listener 也支持 Portal 组件。

组件

import { ClickAwayListener } from '@mui/base/ClickAwayListener';

下面的演示展示了当用户点击页面上的其他任何位置时,如何隐藏菜单下拉列表

按下 Enter 键开始编辑

与 Portal 一起使用

以下演示使用 Portal 组件将下拉列表渲染到当前 DOM 层次结构外部的新子树中

按下 Enter 键开始编辑

自定义

监听前导事件

默认情况下,Click-Away Listener 组件响应尾随事件——点击或触摸的结束

您可以将组件设置为监听前导事件(点击或触摸的开始),使用 mouseEventtouchEvent 属性,如下面的演示所示

按下 Enter 键开始编辑

可访问性

默认情况下,Click-Away Listener 将向其子元素添加 onClick 处理程序。这可能会导致屏幕阅读器宣布子元素是可点击的,即使此 onClick 处理程序对子元素本身没有影响。

为了防止这种行为,请将 role="presentation" 添加到子元素

<ClickAwayListener>
  <div role="presentation">
    <h1>non-interactive heading</h1>
  </div>
</ClickAwayListener>

这也是修复 NVDA 在使用 Firefox 时阻止公告警报消息的已知问题所必需的——有关详细信息,请参阅 mui/material-ui#29080