Message 消息提示
当需要向用户全局展示提示信息时使用,显示数秒后消失。
引入方法
- 全局调用:组件为 app.config.globalProperties 添加了全局方法 $message。 因此在 vue 实例中可以使用当前页面中的调用方式调用 Message。
- 单独调用:此时调用方法为 TuMessage(options)。 每个类型定义了各自的方法,如 TuMessage.success(options)。 并且可以调用 TuMessage.closeAll() 手动关闭所有实例。
基础用法
从顶部出现,3 秒后自动消失。 Message 可以接收一个字符串或一个 VNode 作为参数,并会被显示为正文内容。
<template>
<tu-button @click="open">单独调用</tu-button>
<tu-button @click="openGlobal">全局调用</tu-button>
<tu-button @click="openVn">VNode</tu-button>
</template>
<script lang="ts" setup>
import { h, getCurrentInstance } from 'vue';
import { TuMessage } from 'tu-view-plus';
const vm = getCurrentInstance()!;
const { $message } = vm.appContext.config.globalProperties;
const open = () => {
TuMessage('这是一条消息。');
};
const openGlobal = () => {
$message('这是一条消息。');
};
const openVn = () => {
TuMessage({
message: h('p', null, [
h('span', null, '消息提示也可以是 '),
h('i', { style: 'color: teal' }, 'VNode')
])
});
};
</script>
<template>
<tu-button @click="open">单独调用</tu-button>
<tu-button @click="openGlobal">全局调用</tu-button>
<tu-button @click="openVn">VNode</tu-button>
</template>
<script lang="ts" setup>
import { h, getCurrentInstance } from 'vue';
import { TuMessage } from 'tu-view-plus';
const vm = getCurrentInstance()!;
const { $message } = vm.appContext.config.globalProperties;
const open = () => {
TuMessage('这是一条消息。');
};
const openGlobal = () => {
$message('这是一条消息。');
};
const openVn = () => {
TuMessage({
message: h('p', null, [
h('span', null, '消息提示也可以是 '),
h('i', { style: 'color: teal' }, 'VNode')
])
});
};
</script>
消息类型
用来显示「成功、警告、消息、错误、信息」类的操作反馈。
<template>
<tu-button @click="openDefault">默认消息</tu-button>
<tu-button type="success" @click="openSuccess">成功消息</tu-button>
<tu-button type="danger" @click="openError">错误消息</tu-button>
<tu-button type="warning" @click="openWarning">警告消息</tu-button>
<tu-button type="info" @click="openInfo">信息消息</tu-button>
</template>
<script lang="ts" setup>
import { TuMessage } from 'tu-view-plus';
const openDefault = () => {
TuMessage('这是一条默认类型消息。');
};
const openSuccess = () => {
TuMessage.success('这是一条成功类型消息。');
};
const openError = () => {
TuMessage.error('这是一条错误类型消息。');
};
const openWarning = () => {
TuMessage.warning('这是一条警告类型消息。');
};
const openInfo = () => {
TuMessage.info('这是一条信息类型消息。');
};
</script>
<template>
<tu-button @click="openDefault">默认消息</tu-button>
<tu-button type="success" @click="openSuccess">成功消息</tu-button>
<tu-button type="danger" @click="openError">错误消息</tu-button>
<tu-button type="warning" @click="openWarning">警告消息</tu-button>
<tu-button type="info" @click="openInfo">信息消息</tu-button>
</template>
<script lang="ts" setup>
import { TuMessage } from 'tu-view-plus';
const openDefault = () => {
TuMessage('这是一条默认类型消息。');
};
const openSuccess = () => {
TuMessage.success('这是一条成功类型消息。');
};
const openError = () => {
TuMessage.error('这是一条错误类型消息。');
};
const openWarning = () => {
TuMessage.warning('这是一条警告类型消息。');
};
const openInfo = () => {
TuMessage.info('这是一条信息类型消息。');
};
</script>
可关闭的消息提示
消息默认关闭时间为 3 秒,当设置 duration 属性值为 0 表示该消息不会自动关闭,此时设置 showClose 值为 true 可以手动关闭。
<template>
<tu-button @click="openDefault">默认消息</tu-button>
<tu-button type="success" @click="openSuccess">成功消息</tu-button>
<tu-button type="danger" @click="openError">错误消息</tu-button>
<tu-button type="warning" @click="openWarning">警告消息</tu-button>
<tu-button type="info" @click="openInfo">信息消息</tu-button>
</template>
<script lang="ts" setup>
import { TuMessage } from 'tu-view-plus';
const openDefault = () => {
TuMessage({
showClose: true,
duration: 0,
message: '这是一条不会自动关闭默认类型消息,需要手动关闭。'
});
};
const openSuccess = () => {
TuMessage({
showClose: true,
message: '这是一条成功类型消息。',
type: 'success'
});
};
const openError = () => {
TuMessage({
showClose: true,
message: '这是一条错误类型消息。',
type: 'error'
});
};
const openWarning = () => {
TuMessage({
showClose: true,
message: '这是一条警告类型消息。',
type: 'warning'
});
};
const openInfo = () => {
TuMessage({
showClose: true,
message: '这是一条信息类型消息。',
type: 'info'
});
};
</script>
<template>
<tu-button @click="openDefault">默认消息</tu-button>
<tu-button type="success" @click="openSuccess">成功消息</tu-button>
<tu-button type="danger" @click="openError">错误消息</tu-button>
<tu-button type="warning" @click="openWarning">警告消息</tu-button>
<tu-button type="info" @click="openInfo">信息消息</tu-button>
</template>
<script lang="ts" setup>
import { TuMessage } from 'tu-view-plus';
const openDefault = () => {
TuMessage({
showClose: true,
duration: 0,
message: '这是一条不会自动关闭默认类型消息,需要手动关闭。'
});
};
const openSuccess = () => {
TuMessage({
showClose: true,
message: '这是一条成功类型消息。',
type: 'success'
});
};
const openError = () => {
TuMessage({
showClose: true,
message: '这是一条错误类型消息。',
type: 'error'
});
};
const openWarning = () => {
TuMessage({
showClose: true,
message: '这是一条警告类型消息。',
type: 'warning'
});
};
const openInfo = () => {
TuMessage({
showClose: true,
message: '这是一条信息类型消息。',
type: 'info'
});
};
</script>
文字居中
设置 center 属性可使消息框内容文字水平居中。
<template>
<tu-button @click="open">文字居中</tu-button>
</template>
<script lang="ts" setup>
import { TuMessage } from 'tu-view-plus';
const open = () => {
TuMessage({
center: true,
message: '文字居中。'
});
};
</script>
<template>
<tu-button @click="open">文字居中</tu-button>
</template>
<script lang="ts" setup>
import { TuMessage } from 'tu-view-plus';
const open = () => {
TuMessage({
center: true,
message: '文字居中。'
});
};
</script>
自定义图标
设置 icon 属性可定义头部图标。
<template>
<tu-button @click="open">添加图标</tu-button>
</template>
<script lang="ts" setup>
import { Search } from '@tu-view-plus/icons-vue';
import { TuMessage } from 'tu-view-plus';
const open = () => {
TuMessage({
message: '头部添加自定义图标',
icon: Search
});
};
</script>
<template>
<tu-button @click="open">添加图标</tu-button>
</template>
<script lang="ts" setup>
import { Search } from '@tu-view-plus/icons-vue';
import { TuMessage } from 'tu-view-plus';
const open = () => {
TuMessage({
message: '头部添加自定义图标',
icon: Search
});
};
</script>
使用 HTML 片段
将 dangerouslyUseHTMLString 属性设置为 true, message 将会被当作 HTML 片段处理。
<template>
<tu-button @click="open">使用HTML</tu-button>
</template>
<script lang="ts" setup>
import { TuMessage } from 'tu-view-plus';
const open = () => {
TuMessage({
dangerouslyUseHTMLString: true,
message: '<span>这是一个 <i style="color: teal">HTML</i> 字符</span>'
});
};
</script>
<template>
<tu-button @click="open">使用HTML</tu-button>
</template>
<script lang="ts" setup>
import { TuMessage } from 'tu-view-plus';
const open = () => {
TuMessage({
dangerouslyUseHTMLString: true,
message: '<span>这是一个 <i style="color: teal">HTML</i> 字符</span>'
});
};
</script>
分组消息合并
设置 grouping 为 true,内容相同的消息将被合并。
<template>
<tu-button @click="open">合并消息</tu-button>
</template>
<script lang="ts" setup>
import { TuMessage } from 'tu-view-plus';
const open = () => {
TuMessage({
grouping: true,
message: '这是一条消息。'
});
};
</script>
<template>
<tu-button @click="open">合并消息</tu-button>
</template>
<script lang="ts" setup>
import { TuMessage } from 'tu-view-plus';
const open = () => {
TuMessage({
grouping: true,
message: '这是一条消息。'
});
};
</script>
Message API
Message Attributes
参数名 | 描述 | 类型 | 默认值 |
---|---|---|---|
message | 消息文字 | String VNode Function | - |
type | 消息类型 | String | '' |
icon | 自定义图标 | String Component | - |
dangerouslyUseHTMLString | 是否将 message 属性作为 HTML 片段处理 | Boolean | false |
customClass | 自定义类名 | String | '' |
duration | 显示时间,单位为毫秒。 设为 0 则不会自动关闭 | Number | - |
showClose | 是否显示关闭按钮 | Boolean | false |
center | 文字是否居中 | Boolean | false |
onClose | 关闭时的回调函数, 参数为被关闭的 message 实例 | Function | - |
offset | Message 距离窗口顶部的偏移量 | Number | 16 |
appendTo | 设置 message 的根元素,默认为 document.body | String HTMLElement | - |
grouping | 合并内容相同的消息,不支持 VNode 类型的消息 | Boolean | false |
repeatNum | 重复次数,类似于 Badge 。当和 grouping 属性一起使用时作为初始数量使用 | Number | 1 |
Message Events
调用 Message 或 this.$message 会返回当前 Message 的实例。 如果需要手动关闭实例,可以调用它的 close 方法。
事件名 | 描述 | 参数 |
---|---|---|
close | 关闭当前的 Message | Function |