1.什么是mutations?
上一篇文章說(shuō)的getters
是為了初步獲取和簡(jiǎn)單處理state
里面的數(shù)據(jù)(這里的簡(jiǎn)單處理不能改變state里面的數(shù)據(jù)),Vue
的視圖是由數(shù)據(jù)驅(qū)動(dòng)的,也就是說(shuō)state
里面的數(shù)據(jù)是動(dòng)態(tài)變化的,那么怎么改變呢,切記在Vuex
中store
數(shù)據(jù)改變的唯一方法就是mutation
!
通俗的理解mutations
,里面裝著一些改變數(shù)據(jù)方法的集合,這是Veux
設(shè)計(jì)很重要的一點(diǎn),就是把處理數(shù)據(jù)邏輯方法全部放在mutations
里面,使得數(shù)據(jù)和視圖分離。
2.怎么用mutations?
mutation結(jié)構(gòu):每一個(gè)mutation
都有一個(gè)字符串類型的事件類型(type
)和回調(diào)函數(shù)(handler
),也可以理解為{type:handler()},
這和訂閱發(fā)布有點(diǎn)類似。先注冊(cè)事件,當(dāng)觸發(fā)響應(yīng)類型的時(shí)候調(diào)用handker()
,調(diào)用type
的時(shí)候需要用到store.commit
方法。
載荷(payload):簡(jiǎn)單的理解就是往handler(stage)
中傳參handler(stage,pryload)
;一般是個(gè)對(duì)象。
commit:提交可以在組件中使用 this.$store.commit('xxx')
提交 mutation
,或者使用 mapMutations
輔助函數(shù)將組件中的 methods
映射為 store.commit
調(diào)用(需要在根節(jié)點(diǎn)注入 store
)。
3.源碼分析
registerMutation
:初始化mutation
commit
:調(diào)用mutation
subscribers
:訂閱store
的mutation
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com
本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。