Vue-Router路由首次跳转页面空白,刷新页面又可以正常访问

背景

最近项目过程中出现了一个奇怪的问题,当用户登入系统后部分路由首次跳转时会出现空白页面,但是在该页面上刷新又可以正常显示路由对应的页面。

系统内包含用户、角色、菜单等管理模块,前端使用了动态路由

问题复现

  1. 系统内有两个角色,A1和A2
  2. A1角色包含P1、P2、P3页面的权限
  3. A2角色包含P1、P2、P3、P4、P5页面的权限
  4. 当首次使用A1角色对应的用户登入系统时,侧边栏所有菜单都可以正常访问
  5. 此时退出A1角色对应的用户并使用A2角色对应的用户登入系统,其中P1、P2、P3菜单对应的页面可以正常访问,但是P4、P5对应的页面首次访问时出现空白的情况,刷新后P4、P5对应的页面可以正常访问

猜想原因

由于项目内使用到了Vue-Router动态路由,猜想可能是因为用户退出登录后再次登入,未重新挂载新的路由导致的。
动态路由代码如下:

// 路由前置导航守卫,处理页面刷新、登录退出
router.beforeEach((to, from, next) => {
   
  // 登录页直接跳转
  if (to.path === '/login') {
   
    next();
    // 回到登录页面,清除路由、当前登录人等信息
    clearDynamicMenus();
    clearUser();
    // 非登录页面需要校验是否已登录、是否页面刷新
  } 
  • 4
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值