我试图弄清楚如何使用 Vue 在同一条路线上拥有 2 个不同的组件。
主页或登录页面,取决于用户是否经过身份验证。也许我在文档中遗漏了一些东西,但我无法也无法弄清楚。甚至可能吗?
谢谢
我试图弄清楚如何使用 Vue 在同一条路线上拥有 2 个不同的组件。
主页或登录页面,取决于用户是否经过身份验证。也许我在文档中遗漏了一些东西,但我无法也无法弄清楚。甚至可能吗?
谢谢
所以你需要动态组件。
无论 Vue 是这些组件的父级,都使用计算属性,该属性根据经过身份验证的状态返回您要使用的组件的名称:
//- in your js
// insert into the vue instance definition, assuming you have an authencation
// property somewhere, eg session.isAuthenticated
...
components: {
MainComponent,
LoginComponent
},
computed: {
useComponent () {
return session.isAuthenticated ? 'MainComponent' : 'LoginComponent'
}
}
...
//- in your template html
<component :is='useComponent' />
在路由器映射中使用 auth 参数:
router.map({
'/home': {
component: Home,
auth: true
},
'/login': {
component: Login
},
'/something': {
component: Something,
auth: true
},
})
然后在每次转换之前检查:
router.beforeEach(function (transition) {
if (transition.to.auth && !auth.user.authenticated) {
transition.redirect('/login')
} else {
transition.next()
}
})