需求: 当用户登录,或者已经登录状态下刷新和重进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执行初次白屏解决方法相关推荐

  1. Vue动态权限路由addRoutes执行初次白屏解决方法。

    需求: 当用户登录,或者已经登录状态下刷新和重进web端,除了普通的路由配置(login.UserInfo.home.404等),还需要用户的权限路由,需要根据用户信息拿到当前用户的权限路由,动态添加 ...

  2. 苹果ios9.2 html白屏,苹果游戏中心白屏怎么办 苹果游戏中心白屏解决方法【详解】...

    苹果游戏中心白屏怎么办?苹果game center无法链接服务器解决方法.近期有部分用户反映,苹果游戏中心出现了白屏情况,那么苹果游戏中心白屏怎么办?让小编给大家讲解一下苹果game center白屏 ...

  3. 工控液晶屏开机白屏怎么回事,开机白屏解决方法?

    工控液晶屏开机白屏怎么回事,开机白屏解决方法? LCD( Liquid Crystal Display),现在已经是随处可见的设备之一,工业上的使用量也随着科技而增多!现在,工业行业都已经开始使用工控 ...

  4. 前端IE或edge页面iframe显示白屏解决方法

    前端IE或edge页面iframe显示白屏解决方法 问题是这样的 :页面里面有iframe,谷歌可以正常显示,ie不行. 但是点击导航栏又可以显示(我做的是导航栏点击换页面): 晕,网上很多我都试过了 ...

  5. 怎么让电脑屏幕一直亮着_笔记本开机白屏怎么回事 笔记本开机白屏解决方法【详解】...

    开机白屏,或者使用电脑的人都明白这个"白屏"的意思,但是也有少些使用电脑的人对这个白屏的了解认识不够,笔记本开机白屏怎么回事?是屏的质量问题还是显卡损坏呢?经常拨动液晶屏和主板连接 ...

  6. 电脑白屏,笔记本电脑白屏是怎么回事 笔记本电脑白屏解决方法【详解】

    笔记本开机,电源指示灯显示正常,且能听得硬盘转的声音,但开机后液晶屏有白屏.暗屏.黑屏.花屏.缺色等问题现象时,我们首先要外接显示器判断问题是在主板部分还是在液晶屏部分. 笔记本电脑白屏是怎么回事 ? ...

  7. 【Android】安卓webview播放视频白屏解决方法

    问题描述 最近在使用webview播放视屏的时候遇到webview整个白屏的问题,因为之前是好的而且在其他高版本的安卓设备中是正常的,检查了代码发现没有相关的改动,所以觉得很奇怪. 查了一些资料发现都 ...

  8. 计算机开机白屏怎么处理,电脑开机白屏是怎么回事 电脑开机白屏解决方法【图文】...

    相信大家在使用电脑的时候会遇到显示器白屏的情况,那电脑白屏是什么呢?电脑白屏就是在液晶显示屏开机之后在屏幕上显示全白的故障,一般显示屏出故障变成黑屏或者蓝屏的比较多,变成白屏主要是出现在长时间使用电脑 ...

  9. 3dmax出现白屏解决方法

    3DMax 卡死.白屏.渲染死机问题总结_Deveuper的博客-CSDN博客_3dmax一渲染完就卡死 修改设置:

最新文章

  1. 怎么保证缓存和数据库一致性
  2. 算法-----两数之和 II - 输入有序数组
  3. 才一年,智能车就不再是新势力专利!
  4. lisp 河道水面线计算_天然河道水面线计算的几种方法解剖.pdf
  5. 信息学奥赛一本通 1052:计算邮资 | OpenJudge NOI 1.4 14
  6. Livebos--流程结束触发事件(修改表和表里的表格字段)
  7. 一个五年Java程序员的从业总结,献给还在迷茫中的你
  8. 针对中东石油能源工业控制系统的又一网军诞生
  9. vant中修改用户的头像
  10. wps里为什么没有华文楷体_是谁动了我的字体?为什么Word或PPT换台电脑打开字体就变了呢?...
  11. pygame中的mixer(含music)模块
  12. 杭州最美的骑行路线在此!趁着春天蹬车撒欢去!
  13. UG NX二次开发(C#)-装配-替换组件
  14. impress.js css模板,使用impress.js制作幻灯片
  15. 单图像超分辨率重建示例代码解析
  16. axure 动态面板 自动适应浏览器宽度_动态面板之“固定到浏览器”与“自适应窗口宽度”特性解读图文教程(18)...
  17. 一种简单的仓储系统实物可视化分布实现方案
  18. 调用ins api获取个人照片信息
  19. Cosmos IBC
  20. Java常见面试题(JVM)

热门文章

  1. 小程序生成二维码 发布版本无法显示 测试和体验版正常
  2. 软件项目管理指南:定义、5大过程、估算及进度管理方法等
  3. 字节跳动无恒实验室首次亮相Black Hat 2021亚洲黑帽大会:全生命周期管理的隐私保护框架
  4. Python读写Excel数据(指定某行某列)
  5. Pots 用bfs模拟2杯子体积分别为A,B通过一系列操作把其中一杯子变为C升水
  6. echarts.js 下载
  7. 2022新的Echarts Demo 网址
  8. 基于Spring+SpringMVC+MyBatis博客系统的开发教程(四)
  9. python条形码识别系统_基于Python与Zbar的无人机盘点条形码识别研究
  10. MySQL Win7 64位 下载、安装与配置图文教程