解决element中message消息提示组件弹出多个弹框问题

导读:本篇文章讲解 解决element中message消息提示组件弹出多个弹框问题,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

前言

elementUi 作为前端主流 ui 框架之一,其中的 message 组件更是占据了系统提示信息中的半壁江山,但是 message 也有一个很明显的问题,例如当用户频繁点击按钮触发判断条件提示信息时、多个请求触发提示信息时,诸如此类,你就会看到如下图的操作。


问题截图

在这里插入图片描述


原因分析

在这里插入图片描述
可以看到,消息提示是动态向页面根节点插入 message 元素来实现弹框效果的,也就是说它们都拥有 message 的属性,通过这个信息我们就可以判断页面中 message 的个数来决定要不要弹出第二个提示框从而解决这个问题。


解决方案:

通过上述我们已经知道了问题所在和解决问题的思路,下面我们需要的就是将思路转为实操,如下:

1. 在项目中创建 optimizePop.js 文件

// 重置 message,防止重复点击重复弹出 message 弹框
import { Message } from 'element-ui'
let messageInstance = null
const mainMessage = options => {
  // 如果弹窗已存在先关闭
  if (messageInstance) messageInstance.close()
      messageInstance = Message(options)
}
const arr = ['success', 'warning', 'info', 'error']
arr.forEach(type => {
  mainMessage[type] = options => {
    if (typeof options === 'string') {
      options = {
        message: options
      }
    }
    options.type = type
    return mainMessage(options)
  }
})
const message = mainMessage
export default message

2. main.js 中引入文件并挂载

import message from '@/utils/optimizePop.js'
Vue.prototype.$message = message

最终实现效果如下图:

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/79346.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!