在路由守卫中添加判断,如果路径错误的话,跳到404页面,代码如下:

 beforeRouteLeave (to, from, next) {
       if(to.path==='/home'){
         next();
       }else{
         next('/404')
       }

但是会一直循环判断,始终进不去404,加了一个判断之后可以进去,代码如下:

beforeRouteLeave (to, from, next) {
       if(to.path==='/home'){
         next();
       }
       if(to.path == "/404"){
       		next();
       }
		else{
         next('/404')
       }

解决方法是从这儿找的,解释如下:
当执行钩子函数时如果遇到next(’/404’)等时会中断当前导航,比如当前导航是去/a,那么遇到next(’/404’)后就会把to.path改为/404,然后会重新触发这个离开的钩子,注意:此时会重新触发执行这个钩子,而不是在这个钩子函数继续执行的,之前是一直没理解这里,以为是执行next(’/404’)后就会直接跳到404页面呢,当重新触发后就会继续执行next(’/404’)所以会一直循环。至于解决办法就是判断下,如果已经是/404了就next()。

Logo

前往低代码交流专区

更多推荐