我知道 actions 是處理異步的 我沒有非同步操作 我的意思是 點擊一個按鈕之後 在methods 中直接更改state中的值 ,不通過actions 也不通過mutation 這樣符合vue的規範嗎
#
过去多啦不再A梦2017-07-05 10:53:19
關於為什麼不能直接呼叫mutation方法或直接修改state屬性,而是必須透過commit來提交mutation呢?引用官方文件:
再次強調,我們透過提交 mutation 的方式,而非直接改變 store.state.count,是因為我們想要更明確地追蹤到狀態的變化。這個簡單的約定能夠讓你的意圖更加明顯,這樣你在閱讀程式碼的時候能更容易解讀應用程式內部的狀態改變。此外,這也讓我們有機會實現一些能記錄每次狀態改變,並保存狀態快照的偵錯工具。有了它,我們甚至可以實現如時間穿梭般的調試體驗。
由於 store 中的狀態是響應式的,在元件中呼叫 store 中的狀態簡單到僅需要在計算屬性中傳回即可。觸發變化也只是在組件的 methods 中提交 mutations。
可以看出來其實是設計vuex的時候為了追蹤state的變化,約定一定要用commit去提交mutation觸發資料的變化的。你可以試試官方的vue調試插件,叫Vue Devtools,可以直接看到組件,data,vuex等,也可以追蹤變化什麼的,試一下估計你就知道為什麼要這麼做了。