2017-10-24 13 views
0

私は、データのユーザ状態を維持するためにvuexモジュールを作成しました。それは次のようになります。Vue/Vuex - 状態データを保存しない

import Vue from "vue"; 

export default { 
    namespaced: true, 
    state: { 
    data: {}, 
    meta: {} 
    }, 
    mutations: { 
    setInitialUserData: function(user){ 
     state.data = user; 
    }, 
    setUserMeta: function(meta){ 
     state.meta = meta; 
    }, 
    }, 
    actions: { 
    setInitialData: function({commit}, user){ 
     console.log(user); 
     commit('setInitialUserData', user.user); 
     commit('setUserMeta', user.userMeta); 
    }, 
    }, 
    getters: { 
    getUser: (state) => state.data, 
    getUserMeta: (state) => state.meta 
    } 
} 

私はこのような私のコンポーネントでログイン時にデータを保存しようとしています:

this.$backend.post('/user/login', null, payload) 
     .then(response => { 
     this.$store.dispatch('auth/login', response.data.token); 
     this.$store.dispatch('user/setInitialData', response.data.user); 
     //this.$router.push('intranet'); 
     }) 
     .catch(error => { 
     //console.log(error); 
     }); 
    } 

私はここに来るデータ:

setInitialData: function({commit}, user){ 
     console.log(user); 
     commit('setInitialUserData', user.user); 
     commit('setUserMeta', user.userMeta); 
    }, 
    }, 

は次のようになりますこれは:

"user": { 
     "name": "John Doe", 
     "nice_name": "John", 
     "login_name": "John", 
     "email": "[email protected]" 
    }, 
    "userMeta": { 
     "department": "Administrasjon", 
     "region": "Oslo", 
     "industry": "Bane" 
    }, 
user:Object 
data:Object (empty) 
meta:Object (empty) 
+0

私のためにうまく動作します:https://jsfiddle.net/yLmgL8gf/16/問題の再現を手助けできますか? – Wouter

+0

私は突然変異に状態を渡していませんでした。それはなぜ機能しなかったのですか、それを忘れました。今はうまくいきます。 – Leff

+0

ああ、フィドルを作成するときに欠落している状態を修正したのを覚えていますが、修正/問題として登録していませんでした:lとにかく問題を解決する答えを書きます。 – Wouter

答えて

1

あなたのミューテータに状態を渡していません::10しかし、何もvuex状態を検査する上で、状態に保存されていない取得し、私は、ユーザーデータとユーザーメタ両方のために、空のオブジェクトを取得

mutations: { 
    setInitialUserData: function(state, user){ 
     state.data = user; 
    }, 
    setUserMeta: function(state, meta){ 
     state.meta = meta; 
    }, 
}, 
関連する問題