javascript - vue中更改state的值
問題描述
我知道 actions 是處理異步的 我沒有異步操作 我的意思是 點擊一個按鈕之后 在methods 中直接更改state中的值 ,不通過actions 也不通過mutation 這樣符合vue的規(guī)范嗎
問題解答
回答1:關(guān)于為什么不能直接調(diào)用mutation方法或者直接修改state屬性,而是必須得通過commit來提交mutation呢?引用官方文檔:
再次強調(diào),我們通過提交 mutation 的方式,而非直接改變 store.state.count,是因為我們想要更明確地追蹤到狀態(tài)的變化。這個簡單的約定能夠讓你的意圖更加明顯,這樣你在閱讀代碼的時候能更容易地解讀應(yīng)用內(nèi)部的狀態(tài)改變。此外,這樣也讓我們有機會去實現(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è)計vuex的時候為了追蹤state的變化,約定一定要用commit去提交mutation觸發(fā)數(shù)據(jù)的變化的。你可以試一下官方的vue調(diào)試插件,叫Vue Devtools,可以直接看到組件,data,vuex等,也可以追蹤變化什么的,試一下估計你就知道為什么要這么做了。
相關(guān)文章:
1. css - 關(guān)于div自適應(yīng)問題,大家看圖吧,說不清2. python - django如何每次調(diào)用標(biāo)簽的時候都取隨機數(shù)據(jù)3. 關(guān)docker hub上有些鏡像的tag被標(biāo)記““This image has vulnerabilities””4. docker images顯示的鏡像過多,狗眼被亮瞎了,怎么辦?5. docker-machine添加一個已有的docker主機問題6. mysql - msyql 判斷字段不為空 簡單方法7. html5 - vue 里的Elemen UI的時間怎么轉(zhuǎn)化為時間戳嗎8. angular.js使用$resource服務(wù)把數(shù)據(jù)存入mongodb的問題。9. javascript - Vue 自定義控件v-model雙向綁定10. linux - mysql源碼安裝遇到的問題
