响应式弹窗 ResponsiveModal

响应式弹窗根据屏幕尺寸自动切换显示模式,在宽屏下显示为 Modal,在窄屏下显示为 Drawer。

何时使用

  • 需要在不同设备上提供一致的用户体验时
  • 希望在移动端使用抽屉式弹窗,在桌面端使用模态弹窗时
  • 构建响应式应用时需要适配不同屏幕尺寸的弹窗组件时

示例

基础用法

最基本的响应式弹窗使用方式,根据屏幕宽度自动切换显示模式。

正在加载组件...
code

自定义断点

通过 breakpoint 属性自定义响应式断点。

正在加载组件...
code

不同抽屉弹出方向

在移动端可以设置不同的抽屉弹出方向。

从底部弹出(默认)

正在加载组件...
code

从右侧弹出

正在加载组件...
code

表单示例

响应式弹窗常用于表单场景。

正在加载组件...
code

确认对话框

用于确认操作的响应式弹窗。

正在加载组件...
code

无底部弹窗

通过 showFooter 属性隐藏底部操作区域。

正在加载组件...
code

自定义底部

通过 footer 属性自定义底部内容。

正在加载组件...
code

API

ResponsiveModal Props

参数说明类型默认值
open是否显示booleanfalse
title标题ReactNode-
closable是否显示关闭按钮booleantrue
closeByOverlay点击蒙层是否可以关闭booleantrue
onClose关闭时的回调() => void-
onOk点击确认按钮的回调() => void-
widthModal 宽度(PC端)number | string520
heightDrawer 高度(移动端上下弹出时)number | string'auto'
footer自定义 footer,设置为 null 则不显示ReactNode | null-
showFooter是否显示 footerbooleantrue
okText确认按钮文字string'确定'
cancelText取消按钮文字string'取消'
okButtonProps确认按钮属性ButtonProps-
cancelButtonProps取消按钮属性ButtonProps-
showCancel是否显示取消按钮booleantrue
children子元素(正文内容)ReactNode-
className自定义类名string-
breakpoint响应式断点,小于此值使用 Drawer,大于等于此值使用 Modalnumber1024
drawerPlacement移动端 Drawer 弹出方向'top' | 'right' | 'bottom' | 'left''bottom'
afterOpenChange打开/关闭动画完成后的回调(open: boolean) => void-

注意事项

  1. 响应式弹窗会根据屏幕宽度自动切换显示模式:
    • 宽屏(≥ breakpoint):显示为 Modal
    • 窄屏(< breakpoint):显示为 Drawer
  2. 默认断点为 1024px,可通过 breakpoint 属性自定义
  3. 在移动端,可以通过 drawerPlacement 属性设置抽屉的弹出方向
  4. 在移动端,可以通过 height 属性设置抽屉的高度
  5. 在桌面端,可以通过 width 属性设置模态框的宽度
  6. 其他属性与 Modal 和 Drawer 组件保持一致
  7. 组件会监听窗口大小变化,自动切换显示模式
  8. 在 SSR 环境中,组件会根据初始窗口大小决定首次渲染的模式