Skip to content

Message Box 消息弹出框 ​

模拟系统的消息提示框而实现的一套模态对话框组件,用于消息提示、确认消息和提交内容。

提示

MessageBox 的作用是美化系统自带的 alert、confirm 和 prompt,因此适合展示较为简单的内容。如果需要弹出较为复杂的内容,请使用 Dialog。

ts
import { MessageBox } from '@szhn/dh-design-pc'

消息提示 ​

调用 MessageBox.alert 方法以打开 alert 框。它模拟了系统的 alert,无法通过按下 ESC 或点击框外关闭。

确认消息 ​

调用 MessageBox.confirm 以打开确认框,通过 type 字段展示不同的状态图标。

提交内容 ​

调用 MessageBox.prompt 打开输入框。可使用 inputPattern 校验输入,inputValidator 自定义校验函数。

使用 VNode ​

message 支持传入 VNode;当内容中包含响应式状态时,建议传入返回 VNode 的函数。

个性化 ​

直接调用 MessageBox 方法并传入 options,可以对标题、按钮文案、按钮样式等进行完全自定义,同时支持通过 beforeClose 在关闭前执行逻辑。

使用 HTML 片段 ​

将 dangerouslyUseHTMLString 设置为 true 可将 message 作为 HTML 片段渲染。

区分取消与关闭 ​

默认情况下,点击取消按钮与关闭图标都会进入相同的拒绝分支。设置 distinguishCancelAndClose 后,可区分两种操作。

内容居中 ​

将 center 设置为 true 即可让弹框内容居中展示。

自定义图标 ​

可通过 icon 传入任意 Vue 组件或 JSX 渲染函数,覆盖默认状态图标。

可拖放 ​

设置 draggable 为 true 开启弹框拖拽能力。

全局方法 ​

如果完整注册了组件库,实例上可直接使用 $msgbox、$alert、$confirm 与 $prompt。

应用上下文继承 ​

MessageBox 支持在构造方法的第二个参数(变体方法为第四个参数)中传入 appContext,以继承当前应用上下文。

ts
import { getCurrentInstance } from 'vue'
import { MessageBox } from '@szhn/dh-design-pc'

const { appContext } = getCurrentInstance()!
MessageBox({}, appContext)
MessageBox.alert('Hello DHdesign', '提示', {}, appContext)

按需引入 ​

ts
import { MessageBox } from '@szhn/dh-design-pc'

MessageBox.alert('操作成功', '提示')
MessageBox.confirm('确认删除该记录?', '警告')
MessageBox.prompt('请输入备注', '提示')

API ​

配置项(部分) ​

属性名说明类型默认值
title标题string''
message正文内容string / VNode / Function—
type消息类型(用于图标)success / warning / info / error''
icon自定义图标string / Component—
showCancelButton是否显示取消按钮booleanfalse
showConfirmButton是否显示确定按钮booleantrue
confirmButtonText确定按钮文本string确定
cancelButtonText取消按钮文本string取消
beforeClose关闭前回调Functionnull
distinguishCancelAndClose区分取消与关闭booleanfalse
center是否居中booleanfalse
draggable是否可拖动booleanfalse
dangerouslyUseHTMLString是否解析 HTMLbooleanfalse
showInput是否显示输入框booleanfalse
inputPattern / inputValidator / inputErrorMessage输入校验——

方法 ​

名称说明
MessageBox.alert(message, title?, options?)打开 alert 框
MessageBox.confirm(message, title?, options?)打开确认框
MessageBox.prompt(message, title?, options?)打开输入框
MessageBox.close()关闭当前打开的 MessageBox

更多配置参见 Element Plus MessageBox。