首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >路由抽象父路由

路由抽象父路由
EN

Stack Overflow用户
提问于 2017-06-20 22:26:18
回答 1查看 4.1K关注 0票数 10

我正在尝试将我当前的站点迁移到vuejs。网站地图必须是:

代码语言:javascript
复制
/login
/signup
/password-reset
/browse
/search
... dozens of other routes

由于其中一些路线分享了很多fx,我让它们成为母航线的子代:

代码语言:javascript
复制
[{ // public routes
  path: '/', 
  component: Auth,
  children: [
    { path: '/login', component: Login },
    { path: '/signup', component: Signup },
    { path: '/password-reset', component: PasswordReset },
  ]
}, 
{ // routes behind Authentication
  path: '/', 
  component: Home,
  children: [
    { path: '/browse', component: Browse },
    { path: '/search', component: Search }
  ]
}]

问题很明显: Auth和Home基本组件现在在技术上是相同的路由路径,我得到了路由错误。由于我将有许多路线共享相同的基本组件和fx,我希望它们是这些抽象状态的子级。

问题1,:如何实现这些路由及其父抽象状态,而不需要向子节点添加所有包装逻辑?

问题2:如何使父状态()不能被路由,或者如果是,默认为子状态?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-21 00:39:12

当多个路由共享相同的路径时,数组中的第一个路由优先。所以你需要把回家的路线放在八月的前面。这样,/路径将始终匹配Home路由,而不是Auth路由。这也意味着它不可能直接路由到八月路线,这是你想要的。

如果不希望访问Home路由,则可以指定在完全匹配时应该发生的重定向:

代码语言:javascript
复制
{
  path: '/',
  component: Home,
  redirect: '/browse',           // Redirect to path, or
  redirect: { name: 'browse' },  // Redirect to named route
  children: ...
}

如果您的Auth组件没有特定于auth的UI,您可能不想使用像这样的“抽象”路由来执行身份验证。关于如何在vue-路由器中实现这一点,有很多信息;有一种方法:

代码语言:javascript
复制
// Routes

{
  path: '/profile',
  component: Profile,
  meta: { auth: true },
}

// Router hooks

router.beforeEach((to, from, next) => {
  if (to.matched.some(route => route.meta.auth) && !authenticated) {
    next('/login');
  } else {
    next();
  }
});
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44663978

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档