vue element-ui 中el-message重复弹出问题解决 el-message重复弹出解决办法

简介: vue element-ui 中el-message重复弹出问题解决 el-message重复弹出解决办法

问题场景:我们在axios中统一处理500、401、404状态码并统一抛出el-message提示,那么就会出现重复提示的问题非常的不友好。如图:
image.png

解决办法:
新建一个resetMessage.js文件,写入以下代码

// resetMessage.js
// 重置message,防止重复点击重复弹出message弹框
import {
   
    Message } from 'element-ui'

let messageDom = null
const resetMessage = (options) => {
   
   
  if (messageDom) messageDom.close() // 判断弹窗是否已存在,若存在则关闭
  messageDom = Message(options)
}
// message类型
const typeArr = ['success', 'error', 'warning', 'info']
typeArr.forEach(type => {
   
   
  resetMessage[type] = options => {
   
   
    if (typeof options === 'string') options = {
   
    message: options }
    options.type = type
    return resetMessage(options)
  }
})
export const myMessage = resetMessage

方法一:全局引入及使用
在main.js文件中引入并挂在到全局
注意:挂载自定义$message必须放在Vue.use(ElementUI)后面,才能覆盖element-ui默认的message,不然没有效果

// main.js
... // 其他代码
/ 引入重写的resetMessage.js文件
import {
   
    myMessage } from './plugins/resetMessage'
Vue.use(ElementUI)

// 注意:挂载自定义$message必须放在Vue.use(ElementUI)后面,才能覆盖element-ui默认的message,不然没有效果

Vue.prototype.$message = myMessage
...// 其他代码
// page.vue 页面调用
methods: {
   
   
    test() {
   
   
        this.$message({
   
   message: '测试', type: 'success'})
        setInterval(()=> {
   
    this.$message.info('测试12')},1000)
    }
}

方法二:局部引入及使用

// axios.js
import {
   
    myMessage } from '../plugins/resetMessage'
// ...其他代码
myMessage.warning('xxxxxxxx')
// ...其他代码
相关文章
|
4月前
|
JavaScript 前端开发
如何优雅的只在当前页面中覆盖ui库中组件的样式(vue的问题)
如何优雅的只在当前页面中覆盖ui库中组件的样式(vue的问题)
46 0
如何优雅的只在当前页面中覆盖ui库中组件的样式(vue的问题)
|
4月前
|
JavaScript
Vue给Element UI的el-popconfirm绑定按钮事件
Vue给Element UI的el-popconfirm绑定按钮事件
|
16天前
|
JavaScript 前端开发 安全
[译] 在 Vue 组件中分离 UI 和业务逻辑。
[译] 在 Vue 组件中分离 UI 和业务逻辑。
|
30天前
|
JavaScript 前端开发
Vue实现Element UI框架的自定义输入框或下拉框在输入时对列表选项进行过滤,以及右键列表选项弹出菜单进行删除
本文介绍了如何在Vue框架结合Element UI库实现自定义输入框或下拉框,在输入时对列表选项进行过滤,并支持右键点击列表选项弹出菜单进行删除的功能。
21 0
|
30天前
|
JavaScript 容器
Vue+Element UI
该博客文章介绍了如何在Vue中集成Element UI来构建后台管理系统的左侧菜单,包括使用`el-menu`、`el-submenu`和`el-menu-item`等组件,并通过Vue router动态构建菜单项及其路由设置。
|
2月前
|
JavaScript
vue + element UI 表单中内嵌自定义组件的表单校验触发方案
vue + element UI 表单中内嵌自定义组件的表单校验触发方案
66 5
|
2月前
|
前端开发 JavaScript
零基础学 Vue + Element UI 第01步 —— 搭建开发环境、创建项目、修改默认模板、启动项目、访问项目
零基础学 Vue + Element UI 第01步 —— 搭建开发环境、创建项目、修改默认模板、启动项目、访问项目
43 1
|
2月前
|
JavaScript
vue + element UI【实战】音乐播放器/语音条(内含音频的加载、控制,事件监听,信息获取,手机网页阴影的去除等技巧)
vue + element UI【实战】音乐播放器/语音条(内含音频的加载、控制,事件监听,信息获取,手机网页阴影的去除等技巧)
48 1
|
2月前
|
前端开发 JavaScript
vue + element-UI 图片压缩canvas【详解】(含完整demo)
vue + element-UI 图片压缩canvas【详解】(含完整demo)
237 1
|
2月前
|
JavaScript
element-ui 在vue中el-input输入框的autofocus属性失效【解决方案】
element-ui 在vue中el-input输入框的autofocus属性失效【解决方案】
154 1