跳到主要內容
+

Modal 視窗

Modal 元件讓您建立對話框、彈出視窗、燈箱和其他元素,這些元素會強制使用者在繼續之前採取行動。

useModal API

匯入

import { unstable_useModal as useModal } from '@mui/base/unstable_useModal';
// or
import { unstable_useModal as useModal } from '@mui/base';

請閱讀這份關於最小化套件大小的指南,以了解差異。reading this guide on minimizing bundle size

參數

名稱類型預設值描述
children*React.ReactElement<any> | undefined | null-

單一子內容元素。

open*boolean-

如果為 true,則顯示元件。

rootRef*React.Ref<Element>-
aria-hiddenReact.AriaAttributes['aria-hidden']-
closeAfterTransitionbooleanfalse

當設定為 true 時,Modal 會等到巢狀轉場效果完成後才關閉。

containerPortalProps['container']-

一個 HTML 元素或返回一個元素的函式。container 將會附加 portal 子元素。
您也可以提供一個回呼函式,該函式會在 React layout effect 中被呼叫。這讓您可以從 ref 設定 container,並使伺服器端渲染成為可能。
預設情況下,它使用頂層文件物件的 body,所以大多數時候它只是 document.body

disableEscapeKeyDownbooleanfalse

如果為 true,按下 Escape 鍵將不會觸發 onClose 回呼函式。

disableScrollLockbooleanfalse

停用滾動鎖定行為。

onClose{ bivarianceHack(event: {}, reason: 'backdropClick' | 'escapeKeyDown'): void }['bivarianceHack']-

當元件請求關閉時觸發的回呼函式。reason 參數可以選擇性地用於控制對 onClose 的回應。

onKeyDownReact.KeyboardEventHandler-
onTransitionEnter() => void-

當轉場效果進入時呼叫的函式。

onTransitionExited() => void-

當轉場效果已退出時呼叫的函式。

回傳值

名稱類型描述
exitedboolean

如果為 true,則退出轉場效果已完成(用於卸載元件)。

getBackdropProps<TOther extends EventHandlers = {}>(externalProps?: TOther) => UseModalBackdropSlotProps<TOther>

backdrop slot props 的解析器。

getRootProps<TOther extends EventHandlers = {}>(externalProps?: TOther) => UseModalRootSlotProps<TOther>

root slot props 的解析器。

getTransitionProps<TOther extends EventHandlers = {}>(externalProps?: TOther) => { onEnter: () => void; onExited: () => void }

轉場效果相關 props 的解析器。

hasTransitionboolean

如果為 true,則元件的子元素是轉場效果元件。

isTopModal() => boolean

如果為 true,則 modal 是最頂層的 modal。

portalRefReact.RefCallback<Element> | null

元件 portal DOM 元素的 ref。

rootRefReact.RefCallback<Element> | null

元件 root DOM 元素的 ref。