Vue如何动态的设置默认路由?

1.需求是这样的:
登录有两重(商户登录页,用户登录页):
-1- 先登录商户
-2- 登录商户成功之后,再登录用户
-3- 商户第一次登录之后以后就不需要再登录了,直接跳转到用户页面用户登录

2.我目前是这样解决的:
默认路由设置成商户登录页,将登录成功之后返回的商户id存在localStorage里面。在商户页created的时候,去获取localStorage里面的值,看是否有,有的话就跳到用户页

3.存在的问题:
当localStorage里面有值的情况下,商户页也不会自动跳到用户页;有的时候又可以;这样的情况出现在我手动输入商户url的时候,手动输入商户url,不会自动跳到用户登录页;直接刷新又可以自动跳转到用户登录页

4.求问问题是什么,或者有更加通用一些的方式吗(o´ω`o)و

阅读 8.8k
2 个回答

这种需求可以用router.beforeEach((to, from, next)解决
token 就相当于 你存储的一个商户登录状态 一个思路 希望对你有帮助

router.beforeEach((to, from, next){
    if (getToken()) { // 
        if (to.path === '/商户') {
          next({ path: '/用户' }) // 如果token存在 说明已经商户页面登录 跳转用户登录页面
        }else{
            // 可以加逻辑
            // 注意释放钩子 next()
        }
     } else {
        next({path:'/商户'})
     }
}

手动输入url的时候没有触发created()?
你两个登录用的是同一个组件吧
或者说,你写created代码的文件是两个登录页面公用的才会出现这种情况

试试监听路由的变化

  watch: {
    '$route.name': function(val) {
      console.log(1, val)
    }
  }
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题