# Message 消息提示

常用于主动操作后的反馈提示。与 Notification 的区别是后者更多用于系统级通知的被动提醒。

# 基础用法

从顶部出现,3 秒后自动消失。

Message 在配置上与 Notification 非常类似,所以部分 options 在此不做详尽解释,文末有 options 列表,可以结合 Notification 的文档理解它们。Element 注册了一个$message方法用于调用,Message 可以接收一个字符串或一个 VNode 作为参数,它会被显示为正文内容。

<template>
  <j-button @click="open">打开消息提示</j-button>
  <j-button @click="openVn">VNode</j-button>
</template>

<script>
  export default {
    methods: {
      open() {
        this.$message('这是一条消息提示');
      },

      openVn() {
        const h = this.$createElement;
        this.$message({
          message: h('p', null, [
            h('span', null, '内容可以是 '),
            h('i', { style: 'color: teal' }, 'VNode')
          ])
        });
      }
    }
  }
</script>
显示代码 复制代码

# 不同状态

用来显示「成功、警告、消息、错误」类的操作反馈。

当需要自定义更多属性时,Message 也可以接收一个对象为参数。比如,设置type字段可以定义不同的状态,默认为info。此时正文内容以message的值传入。同时,我们也为 Message 的各种 type 注册了方法,可以在不传入type字段的情况下像open4那样直接调用。

<template>
  <j-button @click="open2">成功</j-button>
  <j-button @click="open3">警告</j-button>
  <j-button @click="open1">消息</j-button>
  <j-button @click="open4">错误</j-button>
</template>

<script>
  export default {
    methods: {
      open1() {
        this.$message('这是一条消息提示');
      },
      open2() {
        this.$message({
          message: '恭喜你,这是一条成功消息',
          type: 'success'
        });
      },

      open3() {
        this.$message({
          message: '警告哦,这是一条警告消息警告哦',
          type: 'warning'
        });
      },

      open4() {
        this.$message.error('错了哦,这是一条错误消息');
      }
    }
  }
</script>
显示代码 复制代码

# 使用 HTML 片段

message 属性支持传入 HTML 片段

useHTML属性设置为 true,message 就会被当作 HTML 片段处理。

<template>
  <j-button @click="openHTML">使用 HTML 片段</j-button>
</template>

<script>
  export default {
    methods: {
      openHTML() {
        this.$message({
          useHTML: true,
          message: '<strong>这是 <i>HTML</i> 片段</strong>'
        });
      }
    }
  }
</script>
显示代码 复制代码

WARNING

message 属性虽然支持传入 HTML 片段,需注意这是非常危险的,因为容易导致 XSS 攻击 (opens new window)。因此在 useHTML 打开的情况下,请确保 message 的内容是可信的,切记不要将用户提交的内容赋值给 message 属性。

# Options

参数 说明 类型 可选值 默认值
message 消息文字 string / VNode
type 主题 string success/warning/info/error info
icon 自定义图标的类名,会覆盖 type 自带的icon string
useHTML 是否将 message 属性作为 HTML 片段处理 boolean false
duration 显示时间, 毫秒,设置为0或负数时不会自动关闭。 number 3000
onClose 关闭时的回调函数, 参数为被关闭的 message 实例 function
offset Message 距离窗口顶部的偏移量 number 20

# 方法

调用 Messagethis.$message 会返回当前 Message 的实例。如果需要手动关闭实例,可以调用它的 close 方法。

方法名 说明
close 关闭当前的 Message