关于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钩子并进行二次判断

    }

});

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容