首先拍顷,vuex官網(wǎng)上說是一個(gè)vue的狀態(tài)管理工具《焦可能狀態(tài)比較難理解营曼,大家可以簡單地把狀態(tài)理解成為vue的data里面的變量。當(dāng)組件之間的data變量關(guān)系復(fù)雜一點(diǎn)的時(shí)候愚隧,就把其中的變量抽離出來管理蒂阱。大家知道,父子組件之間的通信是比較麻煩的,子組件改變父組件數(shù)據(jù)還要用$emit录煤。如果有一個(gè)地方跟倉庫一樣統(tǒng)一存放著數(shù)據(jù)鳄厌,誰要用誰去請求,誰想改就改該多好是吧妈踊,vuex就是干這個(gè)的了嚎,有點(diǎn)全局變量的意思。任何組件需要拿廊营,改東西歪泳,都可以找他。
vuex五個(gè)核心屬性
1露筒、首先state是惟一的數(shù)據(jù)載體呐伞,跟倉庫一樣。
2慎式、而mutations是唯一可以改變state的值的東東伶氢,使用commit修改state。這兩個(gè)是vuex最最基礎(chǔ)缺一不可的瞬捕。簡單的vuex管理就使用這兩個(gè)就行鞍历。
3、getters的官方說明:派生出新的狀態(tài)肪虎,這個(gè)比較難理解劣砍。簡單來說,就是過濾扇救,組合刑枝!
比如說state里面存了一個(gè)數(shù)組,數(shù)組有好多個(gè)數(shù)據(jù)迅腔,而我只想要用status:0的那些個(gè)装畅,就可以用getters。是不是有點(diǎn)過濾的意思沧烈。所以getters有時(shí)候還很好用掠兄,很必要!锌雀。
4蚂夕、actions是用來提交mutations,為什么不用actions直接修改state值呢腋逆?其實(shí)大多數(shù)的管理工具都是這樣做的婿牍,比如redux,mobx惩歉。actions定義修改的動(dòng)作并且進(jìn)行數(shù)據(jù)請求等脂,通過commit再去觸發(fā)對應(yīng)的mutations俏蛮。是很重要的一個(gè)屬性,也符合解耦的思想上遥。
5搏屑、modules也是輔助方法。比如modulesA有一個(gè)完整的state粉楚、actions睬棚、getters、mutations解幼;modulesB也可以有一個(gè)完整的state、actions包警、getters撵摆、mutations,他就是將store分割成模塊害晦,避免混淆特铝。