我可以用空组件创建 Vue 路由吗?
Can I create Vue route with empty component?
假设我有这些路线:
/admin/login
/admin
/admin/dashboard
/admin
的目的是根据用户的身份验证状态将用户重定向到 /admin/login
或 /admin/dashboard
。所以它没有template/component。实现此目标的正确方法是什么?
我应该只创建一个 Admin.vue 组件来重定向用户吗?或者有其他方法吗?
听起来你想要一个导航卫士。参见 https://router.vuejs.org/guide/advanced/navigation-guards.html
例如
[{
path: '/admin',
beforeEnter (to, from, next) {
if (userIsAuthenticated) {
next({ name: 'admin-dashboard' }) // or next('/admin/dashboard')
} else {
next({ name: 'admin-login' }) // or next('/admin/login')
}
}
}, {
path: '/admin/dashboard',
name: 'admin-dashboard',
component: ...
}, {
path: '/admin/login',
name: 'admin-login',
component: ...
}]
所以不,对于从不呈现任何内容的路由,您不需要 Admin
组件。
您可能还需要一个全局导航守卫来保护需要身份验证的页面。
假设我有这些路线:
/admin/login
/admin
/admin/dashboard
/admin
的目的是根据用户的身份验证状态将用户重定向到 /admin/login
或 /admin/dashboard
。所以它没有template/component。实现此目标的正确方法是什么?
我应该只创建一个 Admin.vue 组件来重定向用户吗?或者有其他方法吗?
听起来你想要一个导航卫士。参见 https://router.vuejs.org/guide/advanced/navigation-guards.html
例如
[{
path: '/admin',
beforeEnter (to, from, next) {
if (userIsAuthenticated) {
next({ name: 'admin-dashboard' }) // or next('/admin/dashboard')
} else {
next({ name: 'admin-login' }) // or next('/admin/login')
}
}
}, {
path: '/admin/dashboard',
name: 'admin-dashboard',
component: ...
}, {
path: '/admin/login',
name: 'admin-login',
component: ...
}]
所以不,对于从不呈现任何内容的路由,您不需要 Admin
组件。
您可能还需要一个全局导航守卫来保护需要身份验证的页面。