router.beforeEach跳转404失败
时间: 2024-01-20 17:15:50 浏览: 93
使用vue-route 的 beforeEach 实现导航守卫(路由跳转前验证登录)功能
根据提供的引用内容,出现router.beforeEach跳转404失败的原因可能有两个:
1. currentPathName 数据仍然是初始化的值:如果在直接输入网址访问页面时,并没有经过路由切换,那么 currentPathName 数据可能仍然是初始化的值。这是因为 beforeEach 导航守卫是在路由切换时触发的。
2. vue-router版本问题:最新版本的vue-router(3.5.2)引入了promise,push、replace方法会返回一个Promise。当传递参数多次且重复,或是没有写成功或失败的回调,会抛出异常,导致跳转失败。
为了解决这个问题,你可以尝试以下方法:
1. 确保在路由切换时,currentPathName 数据已经更新为正确的值。你可以在路由切换前更新 currentPathName 数据,或者在路由切换后再获取 currentPathName 数据。
2. 检查你的vue-router版本是否是最新的。如果是最新版本,确保在使用 push、replace 方法时传递的参数不重复,并且写了成功或失败的回调函数。
下面是一个示例代码,演示如何解决router.beforeEach跳转404失败的问题:
```javascript
// 更新 currentPathName 数据
router.beforeEach((to, from, next) => {
currentPathName = to.path;
next();
});
// 使用 push 方法并传递成功和失败的回调函数
router.push('/404', () => {
console.log('跳转成功');
}, () => {
console.log('跳转失败');
});
```
阅读全文