关于Vue中的全局前置导航守卫beforeEach()中第三个参数next调用出现死循环的问题

问题描述:

在调用Vue中的全局前置导航守卫beforeEach(to, from, next)中的next函数,在给next()传参数的时候出现死循环的问题!

导致问题原因:

其实导致这个问题的根本是没有完全理解beforeEach()和next("/somewhere")的作用

首先,我们来看看next()的用法

究其根本是当执行了next("/somewhere")的时候又触发了beforeEach()这个钩子,所以就变成了无限死循环!

解决办法:

router.beforeEach((to, from, next) => {

    let {path} = to;

    if(path=== "/somewhere") {

        next(); // 导航目的地符合预期,继续后续事情

     }else {

        next("/somewhere");  

        // 导航目的地不符合预期,重新路由新路径地址,然后会再次触发beforeEach钩子并进行二次判断

    }

});

你可能感兴趣的:(关于Vue中的全局前置导航守卫beforeEach()中第三个参数next调用出现死循环的问题)