R后悔药 Rue.js
  • 首页
    • 深度指南
    • 实战例子
    • 快速上手
    • 路由指南
    • 术语表
    • 错误代码参考
  • API
    • 合作伙伴
    • 插件
    • 组件库
    • 工具链
    • Text.js
    • 新闻简报
    • 常见问题
    • 团队
    • 版本发布
    • 社区指南
    • 行为规范
    • 隐私政策
  • 赞助
  • 合作伙伴
设置
目录统计
总条目
  • 按钮 Button
  • 排版 Typography
  • 时间选择器 TimePicker
  • 下拉菜单 Dropdown
  • 悬浮操作按钮 FAB
  • 模态框 Modal
  • 切换 Swap
  • 主题控制器 Theme Controller
  • 手风琴 Accordion
  • 头像 Avatar
  • 徽标 Badge
  • 卡片 Card
  • 轮播 Carousel
  • 聊天气泡 Chat
  • 折叠面板 Collapse
  • 倒计时 Countdown
  • 描述列表 Descriptions
  • 对比 Diff
  • 二维码 QRCode
  • 悬浮 3D 卡片 Hover 3D
  • 悬浮画廊 Hover Gallery
  • 键盘提示 Kbd
  • 列表 List
  • 统计 Stat
  • 状态 Status
  • 表格 Table
  • 文本轮播 Text Rotate
  • 时间线 Timeline
  • 锚点 Anchor
  • 固钉 Affix
  • 面包屑 Breadcrumbs
  • 底部导航 Dock
  • 链接 Link
  • 菜单 Menu
  • 导航栏 Navbar
  • 分页 Pagination
  • 步骤 Steps
  • 选项卡 Tabs
  • 提示 Alert
  • 结果页 Result
  • 空状态 Empty
  • 加载 Loading
  • 全局提示 Message
  • 进度条 Progress
  • 环形进度 Radial Progress
  • 骨架屏 Skeleton
  • 通知提醒框 Notification
  • 轻提示 Toast
  • 气泡确认框 Popconfirm
  • 气泡卡片 Popover
  • 工具提示 Tooltip
  • 日历 Calendar
  • 颜色选择器 ColorPicker
  • 复选框 Checkbox
  • 字段集 Fieldset
  • 表单 Form
  • 文件输入 File Input
  • 筛选器 Filter
  • 标签 Label
  • 单选框 Radio
  • 范围选择 Range
  • 评分 Rating
  • 分段选择 Segmented
  • 自动完成 AutoComplete
  • 选择器 Select
  • 树选择 TreeSelect
  • 树控件 Tree
  • 提及输入 Mentions
  • 穿梭框 Transfer
  • 漫游引导 Tour
  • 输入框 Input
  • 数字输入 InputNumber
  • 文本域 Textarea
  • 开关 Toggle
  • 校验器 Validator
  • 分隔线 Divider
  • 弹性布局 Flex
  • 分割面板 Splitter
  • 抽屉侧边栏 Drawer
  • 页脚 Footer
  • 栅格 Grid
  • 瀑布流 Masonry
  • 布局 Layout
  • 主视觉区 Hero
  • 指示器 Indicator
  • 组合项 Join
  • 蒙版 Mask
  • 水印 Watermark
  • 间距 Space
  • 堆叠 Stack
  • 浏览器样机 Mockup Browser
  • 代码样机 Mockup Code
  • 手机样机 Mockup Phone
  • 窗口样机 Mockup Window
目录统计
总条目
  • 按钮 Button
  • 排版 Typography
  • 时间选择器 TimePicker
  • 下拉菜单 Dropdown
  • 悬浮操作按钮 FAB
  • 模态框 Modal
  • 切换 Swap
  • 主题控制器 Theme Controller
  • 手风琴 Accordion
  • 头像 Avatar
  • 徽标 Badge
  • 卡片 Card
  • 轮播 Carousel
  • 聊天气泡 Chat
  • 折叠面板 Collapse
  • 倒计时 Countdown
  • 描述列表 Descriptions
  • 对比 Diff
  • 二维码 QRCode
  • 悬浮 3D 卡片 Hover 3D
  • 悬浮画廊 Hover Gallery
  • 键盘提示 Kbd
  • 列表 List
  • 统计 Stat
  • 状态 Status
  • 表格 Table
  • 文本轮播 Text Rotate
  • 时间线 Timeline
  • 锚点 Anchor
  • 固钉 Affix
  • 面包屑 Breadcrumbs
  • 底部导航 Dock
  • 链接 Link
  • 菜单 Menu
  • 导航栏 Navbar
  • 分页 Pagination
  • 步骤 Steps
  • 选项卡 Tabs
  • 提示 Alert
  • 结果页 Result
  • 空状态 Empty
  • 加载 Loading
  • 全局提示 Message
  • 进度条 Progress
  • 环形进度 Radial Progress
  • 骨架屏 Skeleton
  • 通知提醒框 Notification
  • 轻提示 Toast
  • 气泡确认框 Popconfirm
  • 气泡卡片 Popover
  • 工具提示 Tooltip
  • 日历 Calendar
  • 颜色选择器 ColorPicker
  • 复选框 Checkbox
  • 字段集 Fieldset
  • 表单 Form
  • 文件输入 File Input
  • 筛选器 Filter
  • 标签 Label
  • 单选框 Radio
  • 范围选择 Range
  • 评分 Rating
  • 分段选择 Segmented
  • 自动完成 AutoComplete
  • 选择器 Select
  • 树选择 TreeSelect
  • 树控件 Tree
  • 提及输入 Mentions
  • 穿梭框 Transfer
  • 漫游引导 Tour
  • 输入框 Input
  • 数字输入 InputNumber
  • 文本域 Textarea
  • 开关 Toggle
  • 校验器 Validator
  • 分隔线 Divider
  • 弹性布局 Flex
  • 分割面板 Splitter
  • 抽屉侧边栏 Drawer
  • 页脚 Footer
  • 栅格 Grid
  • 瀑布流 Masonry
  • 布局 Layout
  • 主视觉区 Hero
  • 指示器 Indicator
  • 组合项 Join
  • 蒙版 Mask
  • 水印 Watermark
  • 间距 Space
  • 堆叠 Stack
  • 浏览器样机 Mockup Browser
  • 代码样机 Mockup Code
  • 手机样机 Mockup Phone
  • 窗口样机 Mockup Window

Modal 模态框

Modal 现在保持 Rue 自己的视觉风格,同时提供了更完整的显隐控制、默认 footer、异步确认、遮罩交互、挂载策略与 root/mask/wrapper 级别的语义化定制能力。

# Controlled modal

展示基础受控用法:通过 `open` 和 `onClose` 管理显隐,默认 footer 会自动提供关闭按钮。

点击按钮后会显示受控模态框,并通过默认关闭按钮或右上角关闭图标收起。

# Maskless modal and layer hooks

`mask={false}` 会真正移除遮罩层;需要精细控制时可继续配合 `rootStyle`、`wrapClassName` 与语义化 `classNames/styles`。

当前示例关闭了遮罩视觉,因此背景保持可见,点击外层空白区域也不会触发关闭。

# Modal with custom actions

基础 `actions` 仍然可用,适合把自定义按钮组插到 footer 里,同时保持默认关闭按钮。

可以使用 `actions` 支持基础示例,同时切换到新的 `footer` API。

# Wide modal box

基础宽弹层示例保持,同时也可以配合 `width` 使用更偏语义化的尺寸写法。

通过 `className` 直接扩展 modal-box 宽度和排版,基础写法完整提供。

# Default footer with async confirm

更贴近常见业务弹窗的用法:给 `onOk/onCancel` 和 `confirmLoading` 即可得到默认确认 footer。

默认 footer 会自动生成取消/确认按钮,并把 `confirmLoading` 映射到确认按钮。

# Footer render and centered layout

通过 `centered`、`width`、语义化 className 和 `footer(originNode => ...)`,可以在不改动视觉体系的前提下重组结构。

`footer` 支持函数式包裹默认 footer,适合在两端插入说明信息或额外操作。

# API

支持如下的命令式弹窗:`Modal.confirm/info/success/warning/error` 会直接打开弹窗,并返回可 `update/destroy` 的实例。

等待命令式弹窗操作。

# Keep mounted content

需要在关闭后保持 DOM 状态时,可以开启 `forceRender` + `destroyOnHidden={false}`。

在文本框里输入内容,关闭后再次打开,未提交的草稿仍会保持。

Draft note
这里禁用了遮罩点击和 ESC 关闭,只保持右上角关闭按钮,方便演示 `maskClosable` 与 `keyboard`。

API

以下列出当前设计页覆盖到的主要 `Modal` 能力。

属性说明类型默认值
open受控显隐。booleanfalse
defaultOpen非受控初始打开状态。booleanfalse
title标题区域内容。any-
footer自定义 footer;传 `null` 可隐藏;也支持函数包裹默认 footer。any | (originNode) => any-
actions基础动作区写法,会展示基础“自定义动作 + 默认关闭按钮”行为。any-
onOk / onCancel / onClose确认、取消与关闭回调。function-
confirmLoading让默认确认按钮进入 loading 态。booleanfalse
loading主体切换到骨架占位态,并临时隐藏 footer。booleanfalse
okText / cancelText / okType默认 footer 的按钮文案与确认按钮类型。any / any / ButtonType`确定` / 自动 / `primary`
width / className设置 modal-box 宽度;`className` 仍直接追加到 box。string | number / string-
rootStyle / wrapClassName / wrapProps / maskClassName / maskStyle分别定制根层、wrapper 和遮罩层;`mask={false}` 时不会渲染遮罩节点。style / string / object / string / style-
centered垂直居中。booleanfalse
mask / maskClosable / keyboard控制遮罩显示、点击遮罩关闭与 ESC 关闭。booleantrue / true / true
closable / closeIcon右上角关闭按钮与自定义关闭图标。boolean / anytrue / 默认图标
forceRender / destroyOnHidden控制关闭后是否保持内容挂载。boolean / booleanfalse / true
destroyOnClose / getContainer别名,并支持通过 Teleport 把弹层渲染到指定容器。boolean / string | HTMLElement | (() => HTMLElement) | false- / false
bodyClassName / headerClassName / footerClassName分别定制头部、主体、底部区域类名。string-
classNames / styles按语义分区覆盖 root/mask/wrapper/container/box/header/title/body/footer/close。object-
modalRender接管最终弹层节点的二次包裹。(node) => any-
afterOpenChange / afterClose显隐变化后的钩子。function-
Modal.confirm / info / success / warning / error命令式打开确认或反馈弹窗;返回实例支持 `update` 与 `destroy`。(config) => ModalFuncHandle-
Modal.open / Modal.destroyAll / Modal.useModal通用命令式入口、销毁所有命令式弹窗,以及局部 holder 实例。function-

FAQ

什么时候用 `actions`,什么时候用 `footer`?如果你在接入项目代码,可以直接用 `actions` 即可;新代码优先用 `footer`,它可以完全接管 footer,也可以用函数包装默认 footer。

`className`、`bodyClassName` 和 `classNames` 怎么选?`className` 仍直接追加到modal-box;只想改某个区域时优先用bodyClassName/headerClassName/footerClassName;需要更细粒度统一配置时再用 classNames。

为什么保持 `destroyOnHidden` 默认关闭即卸载?这是为了支持 Rue 当前组件行为;当你确实需要保持 DOM 状态时,再显式开启forceRender与destroyOnHidden={false}。

页内导航
页内导航
文档
  • 深度指南
  • 实战例子
  • 快速上手
  • 术语表
  • 错误码参照表
关于
  • 常见问题
  • 团队
  • 版本发布
  • 社区指南
生态
  • 插件
  • 组件库
  • 路由指南
  • Text.js
© 2024-2026 Xiangmin Liu
Rue.JS