跳至內容
+

Click-Away Listener

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>

這也是修復在 Firefox 中使用 NVDA 時,會阻止宣告警示訊息的已知問題所必需的—詳細資訊請參閱 mui/material-ui#29080