我在vuex store.js使用来自集中式状态管理 vuex我的登录状态存储为像下面Vue的路由器导航gaurd
export const store = new Vuex.Store({
state: {
loggedIn: false,
userName: 'Guest',
error: {
is: false,
errorMessage: ''
}
},
getters: {
g_loginStatus: state => {
return state.loggedIn;
},
g_userName: state => {
return state.userName;
},
g_error: state => {
return state.error;
}
}
)};
当我在用户登录设置一个布尔值loginstatus为true,并删除登录按钮,并用注销按钮取代 一切工作正常,但问题是当用户登录,如果我直接在搜索栏中输入登录组件的路径,我可以导航到登录页面 我想抢先此行为 如果使用已登录并搜索登录页面的路径他必须被重定向到主页
我在登录组件 使用beforeRouteEnter尝试,但我们没有接取到这个实例,因为该组件没有加载 所以,我怎样才能检查搜索栏从我的商店的登录状态
我在login.vue脚本
script>
export default{
data(){
return{
email: '',
password: ''
};
},
methods: {
loginUser(){
this.$store.dispatch('a_logInUser', {e: this.email, p: this.password}).then(() =>{
this.$router.replace('/statuses');
});
}
},
beforeRouteEnter (to, from, next) {
next(vm => {
if(vm.$store.getters.g_loginStatus === true){
//what shall i do here
}
})
}
}
我试过这种方法有时,,,,它的工作原理,但有时登录页面被打开,如果我直接在搜索进入登录页面的URL。 –
@VamsiKrishna尝试我编辑的代码,添加挂载块。 – Saurabh
尝试添加挂载的钩子,但现在我按登录按钮后没有什么happpens,url更改时,我clivck其他路由器的链接,但页面停留在登录页 –