Message 消息
用于操作后的轻量反馈。与通知的区别在于,通知更常用于系统级、被动推送的信息。
基础用法
默认从顶部出现,3 秒后消失。可通过 placement 控制位置。
用法与通知相近,部分字段不再赘述;可对照下方选项表与通知文档理解。Uniboot UI 会注册全局 $message。message 可为字符串或 VNode 作为主体内容。
类型
用于成功、警告、消息与错误等反馈。
需要更多定制时,可传入对象参数,例如 type 定义类型,默认 info,主体放在 message。亦提供各类型快捷方法,可直接调用而无需传 type。
朴素样式
设置 plain 使用朴素背景。
可手动关闭
可显示关闭按钮。
默认不可手动关闭;设置 showClose 可关闭。与通知相同,duration 控制停留时长,默认 3000ms,设为 0 则不自动消失。
使用 HTML 字符串
message 支持 HTML 字符串。
dangerouslyUseHTMLString 为 true 时按 HTML 解析 message。
WARNING
虽然 message 支持 HTML,但动态渲染不可信 HTML 易导致 XSS。启用 dangerouslyUseHTMLString 时请确保内容可信,切勿将用户输入直接作为 message。
合并相同内容
相同内容可合并展示。
grouping 为 true 时合并相同 message。
位置
控制消息出现位置,可在视口顶部(默认)或其他方位。
全局方法
完整引入后会在 app.config.globalProperties 注册 $message,选项式 API 中可如本文调用。
按需引入
import { UMessage } from 'uniboot-ui'此时使用 UMessage(options),亦提供 UMessage.success(options) 等类型方法。可调用 UMessage.closeAll() 关闭全部实例。
应用上下文继承
构造函数第二个参数可传入 context,以继承当前应用上下文。
TIP
若已全局注册 UMessage,将自动继承应用上下文。
import { getCurrentInstance } from 'vue'
import { UMessage } from 'uniboot-ui'
// 在 setup 中
const { appContext } = getCurrentInstance()!
UMessage({}, appContext)消息 API
选项
| 名称 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| message | 消息文本 | string / VNode / Function | '' |
| type | 类型 | enum | info |
| plain | 是否朴素样式 | boolean | false |
| icon | 自定义图标,覆盖 type | string / Component | — |
| dangerouslyUseHTMLString | message 是否按 HTML 解析 | boolean | false |
| customClass | 自定义类名 | string | '' |
| duration | 显示时长(毫秒),0 表示不自动关闭 | number | 3000 |
| showClose | 是否显示关闭按钮 | boolean | false |
| onClose | 关闭回调,参数为消息实例 | Function | — |
| offset | 距离视口边缘偏移(placement 为 top* 时距顶部,bottom* 时距底部) | number | 16 |
| placement | 位置 | enum | top |
| appendTo | 挂载根元素,默认 document.body | CSSSelector / HTMLElement | — |
| grouping | 是否合并相同内容(VNode 类型不支持) | boolean | false |
| repeatNum | 重复次数角标初始值,配合 grouping 使用 | number | 1 |
方法
Message 与 this.$message 返回当前实例,可调用 close 手动关闭。
| 名称 | 说明 | 类型 |
|---|---|---|
| close | 关闭消息 | Function |