私はvuexでvue webpackテンプレートを使用しています。基本的には、状態を更新しないコンポーネントに問題があります。Vue.js/vuex ajax ajax状態のコンポーネントを更新する
私は私のアプリでは店
const state = {
userData: {},
}
を持っている私は、メソッドに持って
私はそれが取り付けられていたときに呼び出すmethods: {
addUserData: function() {
const that = this;
axios.get('URL').then(function (response) {
let obj = response.data;
that.$store.commit('addUserData', {obj});
});
},
突然変異で更新され
mounted() {
this.addUserData();
},
const mutations = {
addUserData(state, {obj}) {
state.userData = obj;
},}
ここまではすべて正常ですが、データは正常に保存されます。しかし、それから、Ajaxがロードを終了するのを待っているわけではなく、何らかの形で束縛されていないので、私は機能しないコンポーネントを持っています。
mounted() {
this.tester();
},
問題があることである前に私がやったと私は同じようにこれを呼んで、私はここにも、この間違ったをやってもよいが、基本的には私のコンポーネントで、私は
data() {
return {
weekData : {
weekDataList: []....
methods: {
tester: function(a) {
// Sorting the userdata using lowdash
this.weekData.weekDataList = _.values(this.$store.state.userData);
},
},
を持ってthis.weekData.weekDataListストア内のuserDataが完了できなかったため、常に空の配列を返します。私はこの1つの配列に基づいていろいろな計算を実行する数十のメソッドを持っています。もし失敗すればそれらはすべて失敗します。
おそらく私のアプローチは間違っていますが、理想的には、ストアが更新されるとデータ属性を更新したいのですか?私は計算されたプロパティでこれをやろうとしていて、{{何でも}}うまく働いていますが、コンポーネントデータの更新方法がわかりませんでした。
そのおかげで素晴らしいですが、私はuserDataが出力上の{{userData}}を使ってのみアクセス可能であると思います。 this.userDataのようなコンポーネント内で、おそらく別の方法などでどこかで使用できますか?スコープがajaxで更新されたら、ローカルデータを更新する必要があります。他のメソッドはこの1ビットのデータに依存しています。 – webknit
Vueがゲッターとセッターを作成するときに、 'userData'をデータプロパティやメソッドと同じように使用することができます。また、計算されたとおりに自動更新されます。 'this。$ store'は反応的なので、userDataの変更が再評価されるとすぐに、weekDataも自動的に更新されます。したがって、すべてが非同期になるとうまくいきます。 – Codebryo
これは意味があり、他の計算された関数でも機能します。最初のuserData要素を取得したいとします。{{userData [0]}}は動作していないようです。 var arr = weekDataList:_.values(this.userData) return arr [0] – webknit