解决:同时发起多个请求后,响应拦截后返回多个重复弹窗问题

1、创建src/utils/resetPopup.js

import Vue from 'vue';
/**重置message,防止重复点击重复弹出message弹框 */
let messageInstance = null;
const resetMessage = (options) => {
    //关闭上一个弹窗,继续下一个弹窗
    if (messageInstance) {
        messageInstance.close() //手动关闭实例,调用它的 close 方法,详细内容请参考Element-ui官方文档。
    }
    messageInstance = Vue.prototype.$message(options)
};
['error', 'success', 'info', 'warning'].forEach(type => {
    resetMessage[type] = options => {
        if (typeof options === 'string') {
            options = {
                message: options
            }
        }
        options.type = type
        return resetMessage(options)
    }
})
export const Message = resetMessage;
/**重置Notify,防止重复点击重复弹出Notify弹框 */
let notifyInstance = null;
const resetNotify = (options) => {
    //关闭上一个弹窗,继续下一个弹窗
    if (notifyInstance) {
        notifyInstance.close() //手动关闭实例,调用它的 close 方法,详细内容请参考Element-ui官方文档。
    }
    notifyInstance = Vue.prototype.$notify(options)
};
['error', 'success', 'info', 'warning'].forEach(type => {
    resetNotify[type] = options => {
        if (typeof options === 'string') {
            options = {
                title: options
            }
        }
        options.type = type
        return resetNotify(options)
    }
})
export const Notify = resetNotify;

2、使用方式

import { Message , Notify } from '@/utils/resetPopup' //重置弹窗
Message({
    message: response.data.msg,
    type: 'error',
    duration: 2000
})
Notify({
    title: response.data.msg,
    type: 'error',
    duration: 2000
})

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值