使用导航守卫beforeEach自定义路由重定向路径

// 重定向自定义
router.beforeEach(async(to, from, next) => {
    if (to.path == '/') {
        const  data = await getAllNeedRoutes()
        console.log(to,'to')
        console.log(data, 'data')
        // , query: JSON.stringify(to.query) 
        next({ path: data, query: to.query });
        return
    }
    if (sessionStorage.getItem('token')) {
        next()
    } else {
        next()
    }

notice:

这里我还遇到一个问题 就是路由死循环  切记导航守卫每一个分支都需要经过next()

next(参数)于next()完全不一样  

next()不会再次调用beforeEach; next(参数)会再次调用beforeEach 不小心就会进入死循环

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
beforeEach是Vue Router的一个导航守卫,用于在进入路由之前执行一些操作。在Vue Router,可以使用beforeEach来设置动态重定向。 动态重定向意味着根据不同的条件或规则决定要将用户重定向到的不同路由。在beforeEach,我们可以根据当前的路由信息和其他条件来进行判断,并通过调用next函数来进行重定向。 在beforeEach,可以接收三个参数,分别是to、from和next。to参数表示即将进入的目标路由,from参数表示当前导航正要离开的路由。而next函数是必须调用的,它可以用来进行重定向。 要实现动态重定向,可以在beforeEach根据特定的条件来调用next函数。例如,我们可以根据用户是否登录来进行重定向。如果用户已登录,则调用next函数并传入要进入的目标路由;如果用户未登录,则调用next函数并传入重定向的路由,让用户跳转到登录页面。 下面是一个示例代码,演示了如何在beforeEach实现动态重定向: ```javascript router.beforeEach((to, from, next) => { if (to.meta.requiresAuth && !isAuthenticated()) { next({ path: '/login', query: { redirect: to.fullPath } // 将目标路由信息传递给登录页面 }) } else { next() // 正常进入目标路由 } }) ``` 在上述代码,我们通过判断目标路由的meta字段是否设置了requiresAuth属性,并且用户尚未登录,来进行动态重定向重定向到登录页面时,我们还通过query参数将目标路由信息传递给登录页面,以便在登录后能够自动跳转回原来要进入的目标路由。 通过在beforeEach设置动态重定向,我们可以根据不同的条件来决定用户的路由跳转,从而实现更灵活和定制化的页面导航。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值