1.表單
? ? Vuex的state不能使用v-model指令綁定到表單元素衡蚂,會沖突的報錯的评雌。因為氯质,一旦input的值改變了譬淳,v-model會試圖改變input綁定的那個值档址,但是Vuex規(guī)定,只有mutations能改state邻梆,so會沖突守伸。
? ? 那么解決思路是什么呢?將state綁定到表單元素的value上浦妄,然后Input事件觸發(fā)action尼摹,指派相應(yīng)的mutations去改變state。
2.傳參
????指派actions有兩種方式
? ? 原始的:this.$store.dispatch(actionsname,props)這種方法是可以傳變量的剂娄。store.dispatch()返回的是promise蠢涝,可以鏈?zhǔn)秸{(diào)用.then執(zhí)行promise西鄉(xiāng)resolve之后的代碼。
????使用mapActions:這種方法不能傳變量阅懦,因為組件內(nèi)的變量都是用this.變量名調(diào)用的和二,但是在mapActions里面,訪問不到當(dāng)前組件data里面的值耳胎。所以要傳變量就用原始的指派方法惯吕,傳常量可以使用mapActions輔助函數(shù)。
3.參數(shù)的位置
? ? mutations函數(shù)的第一參數(shù)是state怕午,第二個參數(shù)才是actions傳過來的參數(shù)混埠。
????action的第一個參數(shù)的context,context是一個與store實例具有相同方法和屬性的對象诗轻,所以在action里,可以調(diào)用context.commit來提交mutations揭北,或者通過context.state和context.getters來獲取state和getters扳炬。
????但是一定要注意吏颖,context不是store實例對象本身,因為store可能會分成很多個模塊恨樟,context只是當(dāng)前模塊分割過來的部分store半醉,對就是這個意思。
4.輔助函數(shù)
? ? 關(guān)于輔助函數(shù)劝术,可以直接在計算屬性后面直接使用缩多,也可以和組件的計算屬性混合使用⊙混合使用的話要使用對象展開符衬吆。
輔助函數(shù)可以使用解構(gòu)賦值從vuex引入
5.關(guān)于store實例
要將action、getters绳泉、mutations逊抡、state都注入到store實例中,他們之間不需要互相導(dǎo)入零酪,將完整的store實例export冒嫡,再注入到項目根組件就好了。
6.關(guān)于http請求
? ? mutations必須是同步函數(shù)四苇,所以所有的異步操作都要在actions里執(zhí)行孝凌,mutations負(fù)責(zé)處理邏輯,修改stat月腋。