当前位置:首页 > VUE

实现vue message

2026-01-08 02:16:15VUE

实现 Vue 消息提示组件

创建 Message 组件src/components 目录下创建 Message.vue 文件,内容如下:

<template>
  <transition name="fade">
    <div v-if="visible" class="message" :class="type">
      {{ content }}
    </div>
  </transition>
</template>

<script>
export default {
  data() {
    return {
      visible: false,
      content: '',
      type: 'info'
    }
  },
  methods: {
    show(content, type = 'info', duration = 3000) {
      this.content = content
      this.type = type
      this.visible = true
      setTimeout(() => {
        this.visible = false
      }, duration)
    }
  }
}
</script>

<style scoped>
.message {
  position: fixed;
  top: 20px;
  left: 50%;
  transform: translateX(-50%);
  padding: 10px 20px;
  border-radius: 4px;
  color: white;
  z-index: 9999;
}

.info {
  background-color: #1890ff;
}

.success {
  background-color: #52c41a;
}

.warning {
  background-color: #faad14;
}

.error {
  background-color: #f5222d;
}

.fade-enter-active, .fade-leave-active {
  transition: opacity 0.5s;
}

.fade-enter, .fade-leave-to {
  opacity: 0;
}
</style>

创建插件文件src/plugins 目录下创建 message.js 文件:

import Vue from 'vue'
import Message from '@/components/Message.vue'

const MessageConstructor = Vue.extend(Message)

const message = (options = {}) => {
  const instance = new MessageConstructor({
    data: options
  })
  instance.$mount()
  document.body.appendChild(instance.$el)
  instance.show(options.content, options.type, options.duration)
}

export default {
  install(Vue) {
    Vue.prototype.$message = message
  }
}

注册插件main.js 中注册插件:

import Vue from 'vue'
import Message from '@/plugins/message'

Vue.use(Message)

使用方式 在组件中调用:

this.$message({
  content: '这是一条提示消息',
  type: 'success',
  duration: 2000
})

// 或简写形式
this.$message.success('操作成功')
this.$message.error('操作失败')

扩展方法message.js 中添加快捷方法:

['success', 'warning', 'info', 'error'].forEach(type => {
  message[type] = (content, duration = 2000) => {
    return message({
      content,
      type,
      duration
    })
  }
})

全局挂载 如果需要全局挂载而非在每个组件中通过 this 调用:

// 在 message.js 中
const message = {
  install(Vue) {
    Vue.prototype.$message = messageFunction
  }
}

// 在 main.js 中
import message from '@/plugins/message'
Vue.use(message)
window.message = message

实现vue message

标签: vuemessage
分享给朋友:

相关文章

vue卖座网实现

vue卖座网实现

Vue 卖座网实现 项目结构搭建 使用 Vue CLI 快速初始化项目,安装必要依赖如 Vue Router、Vuex、Axios。 创建核心目录结构:components(通用组件)、views(页…

vue实现继承语法糖

vue实现继承语法糖

在Vue中实现继承可以通过多种方式模拟类继承的效果,以下是常见的几种方法: 使用mixins实现逻辑复用 通过Vue的mixins机制共享组件选项,达到类似继承的效果: const Bas…

vue实现密码框的包

vue实现密码框的包

Vue 密码框实现方案 在 Vue 中实现密码框功能,可以通过原生 HTML 结合 Vue 指令或使用第三方组件库完成。以下是几种常见方案: 原生 HTML + Vue 双向绑定 <t…

实现vue

实现vue

安装Vue.js 通过npm安装Vue.js是最常见的方式。确保已安装Node.js和npm,运行以下命令: npm install vue 或者使用CDN直接引入: <script s…

vue全选实现

vue全选实现

Vue 全选实现方法 在 Vue 中实现全选功能通常涉及数据绑定和事件处理。以下是几种常见的实现方式: 基础实现方式 <template> <div> <…

vue实现摘要

vue实现摘要

Vue 实现摘要的方法 在 Vue 中实现文本摘要功能通常涉及截取文本的前部分内容并添加省略号。可以通过计算属性、过滤器或自定义指令来实现。 计算属性实现 在 Vue 组件中定义一个计算属性,用于截…