【发布时间】:2022-01-07 00:24:28
【问题描述】:
我的 Vue 路由器通常工作得很好,但是当我在某些路由上并想要导航到其中一个父路由时,它会将我带回根重定向路由而不是我希望它去的子路由
例如,有问题的路线是account-creation。当我从大多数路线使用$router.push('/account-creation') 导航到那里时,它工作得很好。但是,如果我从任何帐户详细信息子路由(如 overview)导航到那里,它会将我带到 /account 而不是 /account-creation!
const routes: RouteRecordRaw[] = [
{
path: '/',
component: () => import('MainLayout.vue'),
children: [
{ path: '/', redirect: '/account' },
{ path: 'account', component: () => import('AccountList.vue') },
{ path: 'account-creation', component: () => import('AccountCreation.vue') },
{
path: 'account/:accountId',
component: () => import('AccountDetailsLayout.vue'),
children: [
{ path: 'overview', component: () => import('AccountOverview.vue') },
{ path: 'settings', component: () => import('AccountSettings.vue') },
],
}
]
}
];
我已经尝试了所有可以在网上找到的解决方案,包括使用完全限定路径、重新排序路由、使用名称路由,但都无济于事
我很确定它与根 / 路径中的 /account 重定向有关,但不知道如何维护该功能并修复该行为
如何确保从 account/{id}/overview 导航到 account-creation 正确导航到 account-creation,而不是 /account 的重定向路由
我尝试过的事情
- 使用命名路径
- 使用路径:要路由到的对象
- 重新排序路线
- /account/:accountId/overview 等路由中的完整路径
【问题讨论】:
-
您是否尝试过使用
$router.push({ path: 'account-creation' });,我怀疑它正在尝试寻找与“帐户”子级相同级别的路径(概述、设置),但因为它不存在,它重定向到重定向到“帐户”路由的根路由。另一种方法是使用命名路由:router.vuejs.org/guide/essentials/named-routes.html -
感谢@Diego,但这根本不会改变行为:-\ 使用
$router.push({ path: 'account-creation' });或/'account-creation'与我原来的问题没有任何不同 -
你的第一个子路径很奇怪,它现在指的是路径
//而不是/;应该使用空字符串路径作为“默认子”。我还喜欢在末尾添加一条包罗万象的路线({path: '*', component: 404.vue})用于无法匹配的路线以避免奇怪的行为或崩溃。您可以在 vue devtools(或 beforeEach 中的 console.log)中检查您的路由历史记录,以更好地了解您的路由是如何被解释的,并请分享,所以我们不是“猜测它与 X 有关”: ) -
你真的需要嵌套路由吗?如 Excalibaard 所述,您设置的路线不正确
标签: vue.js vue-router