1.為什么要使用vuex
解決組件之間的 通信問(wèn)題
方案有
1)常說(shuō)的父子 子父組件之間的通信,問(wèn)題:子組件是不可以改變父組件的數(shù)據(jù)
2) 借助第三方 :事件總線
給vue實(shí)例綁定一個(gè)事件總線 問(wèn)題:通信 數(shù)據(jù)多 雜 不好管理
例如 this.emit('aaa',{}) this.emit('bbb",{})
3)于是乎,出現(xiàn)了第三方 狀態(tài)池 state 把數(shù)據(jù)狀態(tài) 扔到一個(gè)狀態(tài) 池中
2. mutation 和 action的區(qū)別
類比如數(shù)據(jù)庫(kù)彤委,mutation是一次數(shù)據(jù)的讀或者寫
action 可以包含多個(gè)數(shù)據(jù)的讀或者寫,相當(dāng)于事務(wù)的概念,即可以包含多個(gè)commit
mutation就是一次同步操作
ation可以包含任意異步操作
3.Getter 和 mutation
Getter相當(dāng)于對(duì)state的get
mutation相當(dāng)于對(duì)state的set
不能直接修改state的狀態(tài) ,避免同時(shí)去做類似于加減的操作
4.commit
commit 同步
都用commit修改數(shù)據(jù),在改數(shù)據(jù)的那一刻蛾找,相當(dāng)于鎖定該操作
5.mapstate,mapGetter...等輔助函數(shù)
就是將state上的屬性或者方法直接綁定在vue的實(shí)例上
通過(guò)this.XXX調(diào)用 而不是this.$store.XXX
6.關(guān)于state與vue data中的雙向數(shù)據(jù)綁定
當(dāng)嚴(yán)格模式
用這種模式時(shí),必須是值類型
如果是引用類型
則頁(yè)面上data 的改變争拐,會(huì)要去修改state的值
而state值只能有commit 修改
解決方案:官網(wǎng) vuex中的表單處理
https://vuex.vuejs.org/zh/guide/forms.html