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




目录
相关文章
Element ui dialog弹窗最大化最小化关闭组件封装
封装一个最大化最小化关闭的dialog弹窗组件
2987 1
|
开发工具 git 缓存
Git忽略规则.gitignore不生效
在项目开发过程中个,一般都会添加 .gitignore 文件,规则很简单,但有时会发现,规则不生效。 原因是 .gitignore 只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。
60850 4
|
JavaScript 前端开发
在Vue2或Vue3中项目中使用 Isotope(同位素) 过滤和排序神奇的布局神器,全网独家实现!
本文介绍了在Vue2或Vue3项目中如何使用Isotope(同位素)布局库来创建动态的网格布局,并提供了详细的代码实现和效果展示,包括过滤和排序功能。
256 0
在Vue2或Vue3中项目中使用 Isotope(同位素) 过滤和排序神奇的布局神器,全网独家实现!
|
12月前
|
JavaScript 前端开发 开发者
如何在 VSCode 中使用 ESLint 和 Prettier 检查并自动格式化 Vue.js 代码,提升团队协作效率和代码质量。
【10月更文挑战第9天】随着前端开发技术的发展,代码规范和格式化工具变得至关重要。本文介绍如何在 VSCode 中使用 ESLint 和 Prettier 检查并自动格式化 Vue.js 代码,提升团队协作效率和代码质量。通过安装插件、配置 ESLint 和 Prettier,以及设置 VSCode,实现代码实时检查和格式化,确保代码风格一致。
1881 2
|
JavaScript
Vue3的watch使用介绍及场景
Vue3的watch使用介绍及场景
609 0
|
设计模式 算法 数据可视化
分析大型软件系统的经典方法
【6月更文挑战第19天】本文介绍ATAM(架构权衡分析方法)是一种评估大型软件系统架构的工具,着重考虑性能、可用性、安全性和可修改性等质量属性的交互。ATAM提供了一种结构化方法,确保在设计早期就能理解和平衡各种质量属性,以优化系统整体性能。
771 2
分析大型软件系统的经典方法
|
存储 Java 数据库
JPA中@ElementCollection使用
JPA中@ElementCollection使用
165 0
|
监控 Java API
使用Spring Boot构建微服务架构的最佳实践
使用Spring Boot构建微服务架构的最佳实践
|
Java 数据库连接 mybatis
shardingsphere集成mybatis/mybatis-plus快速实现简单分片
shardingsphere集成mybatis/mybatis-plus快速实现简单分片
1044 0
|
移动开发 JavaScript 小程序
uView Toast 消息提示
uView Toast 消息提示
305 0