ElementUI MessageBox 防止多次弹框

简介: 项目使用 axios 拦截器进行接口响应判断处理,通过判断返回的 code 验证用户 token 是否过期,或者 token 无效, 使用 Element MessageBox 弹框提示。

项目使用 axios 拦截器进行接口响应判断处理,通过判断返回的 code 验证用户 token 是否过期,或者 token 无效, 使用 Element MessageBox 弹框提示。


a3f72b49cb59ae0718f36f3122a83c99.png


又因为项目中有个地方需要定时请求服务,获取对应的数据,结果导致在用户在其他设备上登录后(Token无效了),出现定时请求每一次请求拦截器都创建一个 MessageBox 的情况。


解决方式


通过一个变量来标记 MessageBox 状态,如果点击 关闭 , 去登录取消 按钮操作,标记此 MessageBox 已经关闭,否则不创建 MessageBox 询问框。


代码如下


...
let messageBoxFlag = 0 // 默认 MessageBox 未打开
// axios 响应拦截
service.interceptors.response.use(  
async response => {    
const res = response.data    
// 208:未登录,Token过期,Token无效,需要登录    
if (res.code === 208) {      
if (messageBoxFlag === 0) {        
messageBoxFlag = 1 // 修改标记,打开 MessageBox 
MessageBox.confirm('系统检测到您的账号长时间未操作或
账号在其他设备登录, 是否重新登录?', '警告', {     
confirmButtonText: '去登录',          
cancelButtonText: '取消',          
type: 'error'        
}).then(() => {          
messageBoxFlag = 0  // 修改标记          
window.location = window.location.origin        
}).catch(() => {          
messageBoxFlag = 0  // 修改标记        
})      
}    
} else {      
return res    }  
},  
error => {    
Message({      
message: error.message,      
type: 'error',      
duration: 5 * 1000    
})    
return Promise.reject(error)  
}
)
...


Element Message 消息框内置了 close 函数,因此这里不能通过调用 close 的方式解决问题。


参考链接


https://element.eleme.cn/#/zh-CN/component/message-box

https://element.eleme.cn/#/zh-CN/component/message




目录
相关文章
|
5月前
|
JavaScript
【vue】el-dialog 内的tinymce弹窗被遮挡的解决办法 及 tinymce打开弹出菜单后直接关闭对话组件,导致该弹出菜单残留
【vue】el-dialog 内的tinymce弹窗被遮挡的解决办法 及 tinymce打开弹出菜单后直接关闭对话组件,导致该弹出菜单残留
407 6
|
5月前
|
JavaScript
vue element MessageBox.prompt this.$prompt组件禁止显示右上角关闭按钮,取消按钮,及点击遮罩层关闭
vue element MessageBox.prompt this.$prompt组件禁止显示右上角关闭按钮,取消按钮,及点击遮罩层关闭
95 0
|
7月前
|
JavaScript
jQuery模态框弹窗提示代码
jQuery模态框弹窗提示代码
44 1
jQuery模态框弹窗提示代码
|
7月前
uniapp popup弹出窗详解以及相关属性
uniapp popup弹出窗详解以及相关属性
722 3
N..
|
7月前
|
开发框架 前端开发 UED
Bootstrap弹出框与警告框
Bootstrap弹出框与警告框
N..
100 0
|
JavaScript 前端开发
jquery如何在点击一个按钮时显示隐藏
jquery如何在点击一个按钮时显示隐藏
122 0
|
前端开发 数据安全/隐私保护
网页|利用提示框(Tooltip)实现弹窗效果
网页|利用提示框(Tooltip)实现弹窗效果
594 0
|
JavaScript 前端开发 API
vue3鼠标经过显示按钮
在前端开发中,我们经常需要在页面中添加一些交互效果来提升用户体验。其中一个常见的需求就是鼠标经过某个元素时显示一个按钮,这个按钮可以用于触发一些操作或者显示更多的内容。
vant的props弹出层在一个页面做多个弹窗
vant的props弹出层在一个页面做多个弹窗
165 0
|
前端开发 JavaScript
Bootstrap教程(15)--警告框、弹出框、工具提示框
本文目录 1. 概述 2. 警告框 2.1 普通警告框 2.2 可关闭警告框 3. 弹出框 3.1 弹出框初始化 3.2 弹出框显示 4. 工具提示框 4.1 工具提示框初始化 4.2 工具提示框显示 5. 小结
554 0
Bootstrap教程(15)--警告框、弹出框、工具提示框