我在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其他路由器的鏈接,但頁面停留在登錄頁 –