Vue中儲存使用者登入狀態
阿新 • • 發佈:2019-01-01
首先我們假設,這裡的登入元件(register.vue)是App.vue元件的子元件,是通過路由進入登入元件的。
登入元件中使用者點選登入後,後臺會傳過來一個使用者名稱,我的App.vue元件中需要拿到這個使用者名稱,並將上面的“登入註冊”字樣變為“使用者名稱”。
為了保證使用者重新整理後用戶名不會消失,這裡我用到了sessionStorage
程式碼如下:
register.vue中使用者點選登入觸發signIn方法
signIn(){
this.formData = $(".form").serialize();
var that = this ;
this.$http.get("/api/user", this.formData)
.then(response => {
that.userName = response.data.data.user.userName;
that.userHead = response.data.data.userHead;
that.$emit('userSignIn', that.userName);
})
.catch(error => {
console .log(error);
});
}
這裡為了測試我直接mock的資料,真實情況應該是this.$http.post
這裡的重點是那句
that.$emit('userSignIn', that.userName);
向父元件(App.vue)傳值
App.vue程式碼HTML
<keep-alive>
<router-view @userSignIn="userSignIn"></router-view>
</keep-alive>
App.vue程式碼JS
export default {
data(){
return{
userName: sessionStorage.userName
}
},
methods:{
//子元件(register)將使用者名稱傳過來
userSignIn(userName){
sessionStorage.userName = userName;
this.userName = sessionStorage.userName;
}
}
}
這樣父元件就可以使用使用者名稱,保持了登入狀態,並且因為使用了sessionStorage,重新整理頁面也可以保持。