1. 程式人生 > >Vue中儲存使用者登入狀態

Vue中儲存使用者登入狀態

首先我們假設,這裡的登入元件(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,重新整理頁面也可以保持。