2 回答

TA貢獻(xiàn)1847條經(jīng)驗 獲得超11個贊
謝邀。
關(guān)于為什么不能直接調(diào)用mutation方法,而是必須得通過commit來提交mutation呢?
很簡單。官方文檔說明的很好了:
再次強(qiáng)調(diào),我們通過提交 mutation 的方式,而非直接改變 store.state.count,
是因為我們想要更明確地追蹤到狀態(tài)的變化
。這個簡單的約定能夠讓你的意圖更加明顯,這樣你在閱讀代碼的時候能更容易地解讀應(yīng)用內(nèi)部的狀態(tài)改變。此外,這樣也讓我們有機(jī)會去實現(xiàn)一些能記錄每次狀態(tài)改變,保存狀態(tài)快照的調(diào)試工具。有了它,我們甚至可以實現(xiàn)如時間穿梭般的調(diào)試體驗。
由于 store 中的狀態(tài)是響應(yīng)式的,在組件中調(diào)用 store 中的狀態(tài)簡單到僅需要在計算屬性中返回即可。觸發(fā)變化也僅僅是在組件的 methods 中提交 mutations。
很簡單,數(shù)據(jù)響應(yīng)式
是vue的核心概念,在vue上衍生出的vuex自然也遵循了這個概念,所以你直接調(diào)用mutation方法跟直接改變store.state
是一樣,這樣vuex跟蹤不到數(shù)據(jù)的變化,無法做到響應(yīng)式了。
添加回答
舉報