我已经设置了一个route
应该vue-router 4
根据component
用户是否登录动态加载的。我是这样做的(可能有更好的方法?):
import Personal from '../views/Personal.vue';
import Public from '../views/Public.vue';
routes: [
{
path: '/',
component: async () => {
const isLoggedIn = await authenticateUser();
if (isLoggedIn == true) {
return Personal
} else {
return Public
}
}
}
]
App.vue
文件是这样的:
<template>
<div id="app">
<Site-Header></Site-Header>
<router-view></router-view>
<Site-Footer></Site-Footer>
</div>
</template>
问题是,如果用户从主页路由登录,路径为'/'
,他不会离开该路由。相反,我vue-router
只想加载Personal
组件。
Personal
和之间的切换Public
似乎只有在我用力刷新页面时才有效,否则不会发生任何变化。因此,如果用户登录,他们仍然会看到该Public.vue
组件,然后在页面刷新后他们会看到该Personal.vue
组件。如果他们随后注销,他们仍然会看到该Personal.vue
组件,直到他们刷新页面。
如何强制 vue-router 在登录/注销后分析路由并加载正确的组件?