在Vue中,commit
和dispatch
是兩個用于觸發 Vuex store 中的 mutations 和 actions 的方法。
區別
commit
: 用于觸發 mutations,即直接修改 state 的同步操作。通過commit
方法可以調用 store 中的 mutations,并且只能同步地執行。使用方式如下:this.$store.commit('mutationName', payload);
dispatch
: 用于觸發 actions,即執行異步操作或者復雜的邏輯處理。通過dispatch
方法可以調用 store 中的 actions,并且可以是異步的。使用方式如下:this.$store.dispatch('actionName', payload);
辨析:
- 當需要修改 state 時,應該使用
commit
來調用 mutations。 - 當需要進行異步操作、例如發送網絡請求、多個 mutations 之間有依賴關系等情況,應該使用
dispatch
來調用 actions。
總結
commit
用于同步操作,主要用來修改 state;dispatch
用于異步操作,主要用來執行一系列的操作,包括觸發多個 mutations 或者其他一些異步操作。
異步操作:從云端拉取信息后才會執行,放在actions中
同步操作:放在mutations中