跳到内容
+

模态框

模态框组件允许您创建对话框、弹出框、灯箱和其他强制用户在继续之前采取操作的元素。

useModal API

导入

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

通过阅读关于最小化包大小的指南来了解差异。

参数

名称类型默认值描述
children*React.ReactElement<any> | undefined | null-

单个子内容元素。

open*boolean-

如果为 true,则组件显示。

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

当设置为 true 时,模态框会等到嵌套的 Transition 完成后再关闭。

containerPortalProps['container']-

一个 HTML 元素或返回 HTML 元素的函数。container 将会把 portal 子元素附加到它上面。
您也可以提供一个回调函数,它会在 React 布局 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>

背景幕槽 props 的解析器。

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

根槽 props 的解析器。

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

与过渡效果相关的 props 的解析器。

hasTransitionboolean

如果为 true,则组件的子组件是过渡组件。

isTopModal() => boolean

如果为 true,则该模态框是最顶层的模态框。

portalRefReact.RefCallback<Element> | null

组件 portal DOM 元素的 ref。

rootRefReact.RefCallback<Element> | null

组件根 DOM 元素的 ref。