我在一個子元件中methods裡有一個點擊函數
takehash(index){
let hash = this.searchList[index].hash;
this.$store.commit('playvideo', hash);
console.log(this.$store.state.box.Url);
}
store的mutations裡有一個方法
playvideo(state,hash){
Vue.http.get("json.php"+hash).then(res=> {
let jsonObj = res.data;
state.box.Url= jsonObj.url;
console.log('no');
});
}
但是我發現我想要的過程是commit playvideo方法後,執行playvideo方法後,console出來他的url,
但是結果卻是先console出來url,然後才執行playvideo方法,mutations不是同步方法嗎,為什麼會延遲執行,我剛接觸vuex,求大神解決
理論上mutations只用來放同步的方法.而不能使用異步.
而你的playvideo裡面放了個非同步方法.
那執行結果肯定是異步啊.
mutations 同步的意思是你要確保 mutations 裡的方法是同步的,並不是 mutations 把你非同步的方法變成同步。
非同步方法放在 actions 裡