Vue动态权限路由addRoutes执行初次白屏解决方法
需求: 当用户登录,或者已经登录状态下刷新和重进web端,除了普通的路由配置(login、UserInfo、home、404等),还需要用户的权限路由,需要根据用户信息拿到当前用户的权限路由,动态添加路由。
问题:在动态添加的路由页面刷新,会造成白屏。
在addRoutes()之后立即访问被添加的路由会白屏,这是因为刷新会重新执行一次addRouters(),然而此时addRoutes()的回调没有执行结束,就立刻访问被添加的路由,因而找不到刚刚被添加的路由所以导致白屏。因此需要从新访问一次路由才行
解决:使用next({ ...to,replace: true})来确保addRoutes()时动态添加的路由已经被完全加载上去。
router.beforeEach(async(to, from, next) => {// start progress barNProgress.start()// set page titledocument.title = getPageTitle(to.meta.title)// determine whether the user has logged inconst hasToken = getToken()if (hasToken) {if (to.path === '/login') {// if is logged in, redirect to the home pagenext({ path: '/' })NProgress.done()} else {const hasGetUserInfo = store.getters.nameif (hasGetUserInfo) {next()} else {try {// get user infoawait store.dispatch('user/getInfo')//此次dispatch派发的actions中调用了addRouters//使用next({ ...to,replace: true})来确保addRoutes()时动态添加的路由已经被完全加载上去//如果 addRoutes 并未完成,路由守卫会一层一层的执行执行,直到 addRoutes 完成,找到对应的路由next({ ...to, replace: true })} catch (error) {// remove token and go to login page to re-loginawait store.dispatch('user/resetToken')Message.error(error || 'Has Error')next(`/login?redirect=${to.path}`)NProgress.done()}}}} else {/* has no token*/if (whiteList.indexOf(to.path) !== -1) {// in the free login whitelist, go directlynext()} else {// other pages that do not have permission to access are redirected to the login page.next(`/login?redirect=${to.path}`)NProgress.done()}}
})
Vue动态权限路由addRoutes执行初次白屏解决方法相关推荐
- Vue动态权限路由addRoutes执行初次白屏解决方法。
需求: 当用户登录,或者已经登录状态下刷新和重进web端,除了普通的路由配置(login.UserInfo.home.404等),还需要用户的权限路由,需要根据用户信息拿到当前用户的权限路由,动态添加 ...
- 苹果ios9.2 html白屏,苹果游戏中心白屏怎么办 苹果游戏中心白屏解决方法【详解】...
苹果游戏中心白屏怎么办?苹果game center无法链接服务器解决方法.近期有部分用户反映,苹果游戏中心出现了白屏情况,那么苹果游戏中心白屏怎么办?让小编给大家讲解一下苹果game center白屏 ...
- 工控液晶屏开机白屏怎么回事,开机白屏解决方法?
工控液晶屏开机白屏怎么回事,开机白屏解决方法? LCD( Liquid Crystal Display),现在已经是随处可见的设备之一,工业上的使用量也随着科技而增多!现在,工业行业都已经开始使用工控 ...
- 前端IE或edge页面iframe显示白屏解决方法
前端IE或edge页面iframe显示白屏解决方法 问题是这样的 :页面里面有iframe,谷歌可以正常显示,ie不行. 但是点击导航栏又可以显示(我做的是导航栏点击换页面): 晕,网上很多我都试过了 ...
- 怎么让电脑屏幕一直亮着_笔记本开机白屏怎么回事 笔记本开机白屏解决方法【详解】...
开机白屏,或者使用电脑的人都明白这个"白屏"的意思,但是也有少些使用电脑的人对这个白屏的了解认识不够,笔记本开机白屏怎么回事?是屏的质量问题还是显卡损坏呢?经常拨动液晶屏和主板连接 ...
- 电脑白屏,笔记本电脑白屏是怎么回事 笔记本电脑白屏解决方法【详解】
笔记本开机,电源指示灯显示正常,且能听得硬盘转的声音,但开机后液晶屏有白屏.暗屏.黑屏.花屏.缺色等问题现象时,我们首先要外接显示器判断问题是在主板部分还是在液晶屏部分. 笔记本电脑白屏是怎么回事 ? ...
- 【Android】安卓webview播放视频白屏解决方法
问题描述 最近在使用webview播放视屏的时候遇到webview整个白屏的问题,因为之前是好的而且在其他高版本的安卓设备中是正常的,检查了代码发现没有相关的改动,所以觉得很奇怪. 查了一些资料发现都 ...
- 计算机开机白屏怎么处理,电脑开机白屏是怎么回事 电脑开机白屏解决方法【图文】...
相信大家在使用电脑的时候会遇到显示器白屏的情况,那电脑白屏是什么呢?电脑白屏就是在液晶显示屏开机之后在屏幕上显示全白的故障,一般显示屏出故障变成黑屏或者蓝屏的比较多,变成白屏主要是出现在长时间使用电脑 ...
- 3dmax出现白屏解决方法
3DMax 卡死.白屏.渲染死机问题总结_Deveuper的博客-CSDN博客_3dmax一渲染完就卡死 修改设置:
最新文章
- 怎么保证缓存和数据库一致性
- 算法-----两数之和 II - 输入有序数组
- 才一年,智能车就不再是新势力专利!
- lisp 河道水面线计算_天然河道水面线计算的几种方法解剖.pdf
- 信息学奥赛一本通 1052:计算邮资 | OpenJudge NOI 1.4 14
- Livebos--流程结束触发事件(修改表和表里的表格字段)
- 一个五年Java程序员的从业总结,献给还在迷茫中的你
- 针对中东石油能源工业控制系统的又一网军诞生
- vant中修改用户的头像
- wps里为什么没有华文楷体_是谁动了我的字体?为什么Word或PPT换台电脑打开字体就变了呢?...
- pygame中的mixer(含music)模块
- 杭州最美的骑行路线在此!趁着春天蹬车撒欢去!
- UG NX二次开发(C#)-装配-替换组件
- impress.js css模板,使用impress.js制作幻灯片
- 单图像超分辨率重建示例代码解析
- axure 动态面板 自动适应浏览器宽度_动态面板之“固定到浏览器”与“自适应窗口宽度”特性解读图文教程(18)...
- 一种简单的仓储系统实物可视化分布实现方案
- 调用ins api获取个人照片信息
- Cosmos IBC
- Java常见面试题(JVM)
热门文章
- 小程序生成二维码 发布版本无法显示 测试和体验版正常
- 软件项目管理指南:定义、5大过程、估算及进度管理方法等
- 字节跳动无恒实验室首次亮相Black Hat 2021亚洲黑帽大会:全生命周期管理的隐私保护框架
- Python读写Excel数据(指定某行某列)
- Pots 用bfs模拟2杯子体积分别为A,B通过一系列操作把其中一杯子变为C升水
- echarts.js 下载
- 2022新的Echarts Demo 网址
- 基于Spring+SpringMVC+MyBatis博客系统的开发教程(四)
- python条形码识别系统_基于Python与Zbar的无人机盘点条形码识别研究
- MySQL Win7 64位 下载、安装与配置图文教程