如圖示岖妄,Vuex為Vue Components建立起了一個完整的生態(tài)圈鹉勒,包括開發(fā)中的API調(diào)用一環(huán)迹栓。圍繞這個生態(tài)圈拐格,簡要介紹一下?流程 and?各模塊在核心流程中的主要功能:
核心流程:
① Vue Components 是我們的 vue 組件僧免,組件會觸發(fā)(dispatch)一些事件或動作,也就是圖中的 Actions捏浊;
② 我們在組件中發(fā)出的動作懂衩,肯定是想獲取或者改變數(shù)據(jù)的,但是在 vuex 中金踪,數(shù)據(jù)是集中管理的勃痴,我們不能直接去更改數(shù)據(jù),所以會把這個動作提交(Commit)到 Mutations 中热康;
③ 然后 Mutations 就去改變(Mutate)State 中的數(shù)據(jù)沛申;
④ 當(dāng) State 中的數(shù)據(jù)被改變之后,就會重新渲染(Render)到 Vue Components 中去姐军,組件展示更新后的數(shù)據(jù)铁材,完成一個流程。
各模塊在核心流程中的主要功能:
Vue Components:Vue組件奕锌。HTML頁面上著觉,負(fù)責(zé)接收用戶操作等交互行為,執(zhí)行dispatch方法觸發(fā)對應(yīng)action進(jìn)行回應(yīng)惊暴。
dispatch:操作行為觸發(fā)方法饼丘,是唯一能執(zhí)行action的方法。
actions:操作行為處理模塊辽话。負(fù)責(zé)處理Vue Components接收到的所有交互行為肄鸽。包含同步/異步操作卫病,支持多個同名方法,按照注冊的順序依次觸發(fā)典徘。向后臺API請求的操作就在這個模塊中進(jìn)行蟀苛,包括觸發(fā)其他action以及提交mutation的操作。該模塊提供了Promise的封裝逮诲,以支持action的鏈?zhǔn)接|發(fā)帜平。
commit:狀態(tài)改變提交操作方法。對mutation進(jìn)行提交梅鹦,是唯一能執(zhí)行mutation的方法裆甩。
mutations:狀態(tài)改變操作方法。是Vuex修改state的唯一推薦方法齐唆,其他修改方式在嚴(yán)格模式下將會報錯嗤栓。該方法只能進(jìn)行同步操作,且方法名只能全局唯一蝶念。操作之中會有一些hook暴露出來抛腕,以進(jìn)行state的監(jiān)控等芋绸。
state:頁面狀態(tài)管理容器對象媒殉。集中存儲Vue components中data對象的零散數(shù)據(jù),全局唯一摔敛,以進(jìn)行統(tǒng)一的狀態(tài)管理廷蓉。頁面顯示所需的數(shù)據(jù)從該對象中進(jìn)行讀取,利用Vue的細(xì)粒度數(shù)據(jù)響應(yīng)機(jī)制來進(jìn)行高效的狀態(tài)更新马昙。
getters:state對象讀取方法桃犬。圖中沒有單獨(dú)列出該模塊,應(yīng)該被包含在了render中行楞,Vue Components通過該方法讀取全局state對象攒暇。