# message 消息组件 Beta

# 使用示例

默认

长度很长

操作

<template>
  <div class="message-demo">
    <div>
      <p>默认</p>
      <el-button :plain="true" @click="open1">消息从左测默认位置弹出</el-button>
      <el-button :plain="true" @click="open2">成功:偏离左侧10px</el-button>
      <el-button :plain="true" @click="open3">警告,偏离左侧20px</el-button>
      <el-button :plain="true" @click="open4">错误,偏离左侧30px</el-button>
    </div>

    <p>长度很长</p>
    <el-button :plain="true" @click="open6">错误,很长 纯中文</el-button>
    <el-button :plain="true" @click="open7">错误2,很长 纯英文</el-button>
    <p>操作</p>
    <el-button :plain="true" @click="open8">删除所有</el-button>
    <el-button :plain="true" @click="open9">全局调用错误消息9</el-button>
  </div>
</template>

<script>

  export default {
    name: 'message',
    methods: {
      open1() {
        this.$message({
          showClose: true,
          message: '这是一条消息提示',
          left: true,
          onClose() {
            return false;
          },
        });
      },

      open2() {
        this.$message({
          showClose: true,
          message: '恭喜你,这是一条成功消息',
          left: 10,
          type: 'success',
        });
      },

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

      open4() {
        this.$message({
          showClose: true,
          message: '错了哦,这是一条错误消息',
          type: 'error',
          left: 30,
        });
      },
      open5() {
        this.$message({
          showClose: true,
          message: '错了哦,这是一条错误消息',
          type: 'error',
        });
      },
      open6() {
        this.$message({
          showClose: true,
          left: true,
          message:
            '错了哦,这是一条错误消息:很长的错误信息很长的错误信息很长的错误信息很长的错误信息很长的错误信息很长的错误信息很长的错误信息很长的错误信息很长的错误信息很长的错误信息很长的错误信息很长的错误信息',
          type: 'error',
        });
      },
      open7() {
        this.$message({
          showClose: true,
          left: true,
          message:
            'error message::errormessageerrormessageerrormessageerrormessageerrormessageerrormessageerrormessageerrormessageerrormessageerrormessageerrormessageerrormessa',
          type: 'error',
        });
      },
      open8() {
        this.$message.closeAll();
      },
      open9() {
        this.$message.error(
          '错误信息9,错误信息9,错误信息9,错误信息9,错误信息9,错误信息9,错误信息9,'
        );
      },
    },
  };
</script>

<style scoped></style>

显示代码 复制代码

# Options

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

# 方法

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

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

# 全局方法

YKC UI 为 · 添加了全局方法 $message。因此在 vue instance 中可以采用本页面中的方式调用 YkcMessage

# 单独引入

单独引入 YkcMessage

import YKcMessage from '@ykc/ykc-ui/packages/message';

此时调用方法为 YKcMessage(options)。 我们也为每个 type 定义了各自的方法,如 YKcMessage.success(options)。 并且可以调用 YKcMessage.closeAll() 手动关闭所有实例。

# VNode 作为消息内容

<template>
  <el-button :plain="true" @click="open">打开消息提示</el-button>
  <el-button :plain="true" @click="openVn">VNode</el-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>
显示代码 复制代码

# 使用 HTML 片段

message 属性支持传入 HTML 片段

<template>
  <el-button :plain="true" @click="openHTML">使用 HTML 片段</el-button>
</template>

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

!> message 属性虽然支持传入 HTML 片段,但是在网站上动态渲染任意 HTML 是非常危险的,因为容易导致 XSS 攻击。因此在 dangerouslyUseHTMLString 打开的情况下,请确保 message 的内容是可信的,永远不要将用户提交的内容赋值给 message 属性。

Last Updated: 2021/10/19 下午2:59:17