vuex直接修改state 與 用commit提交mutation來修改state的差異:

一. 使用vuex修改state時,有兩種方式:

  1)可以直接使用 this.$store.state.變量 = xxx;
  2)this.$store.dispatch(actionType, payload)
       或者  this.$store.commit(commitType, payload)


  

二. 異同點

  1)共同點: 能夠修改state裏的變量,並且是響應式的(能觸發視圖更新)
  2)不同點:
      若將vue創建 store 的時候傳入 strict: true, 開啓嚴格模式,那麼任何修改state的操作,只要不經過

      mutation的函數,

      vue就會  throw error :    [vuex] Do not mutate vuex store state outside mutation handlers。

      (該報錯原因,請看源碼:https://blog.csdn.net/zhq2005095/article/details/78359883 );
  

  三.使用commit提交到mutation修改state的優點:

     vuex能夠記錄每一次state的變化記錄,保存狀態快照,實現時間漫遊/回滾之類的操作。
     (實際本人未用到,暫時未遇到使用該特性的需求)
  
  結論: 官方要求最好設置嚴格模式,並且每次都要commit來修改state,而不能直接修改state,以便於調試等。(哈哈哈,我就不,我就直接修改state,我就不開啓嚴格模式)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章