Vuex學習筆記

Vuex和全局對象的不一樣:vue

1.Vuex的狀態存儲是響應式的。當Vue組件從store中讀取狀態的時候,若store中的狀態發生變化,那麼相應的組件也會相應地獲得高效的更新。vuex

2.不能直接改變store中的狀態。改變store中的狀態的惟一途徑就是顯示地提交(commit)mutation。這樣使得咱們能夠方便地跟蹤每個狀態的變化,從而讓咱們可以實現一些工具幫助咱們更好地瞭解咱們的應用。promise

 

1.State異步


1.Vuex 使用單一狀態樹,即每一個應用將僅使用一個store實例。函數

2.Vuex經過store選項,提供了一種機制將狀態從根組件注入到每個子組件中。工具

3.藉助mapState函數幫咱們生成計算屬性,少按幾回鍵盤。spa

4.使用對象展開運算符合並對象。?----如何使用插件

5.在某些狀況下,有些狀態嚴格屬於單個組件,這時候狀態仍是做爲組件的局部狀態好,沒有必要將全部的狀態都放入Vuex,不然會使得代碼變得冗長和不直觀。對象

2.Getterblog


1. 有時候須要從state中派生出一些狀態供組件使用,能夠在store中設置getters屬性(相似於組件的計算屬性),組件經過$.store.state.getter.訪問使用。

2.getter也能夠接受其餘getter來做爲第二個參數使用。

3.能夠經過getter返回一個函數,給getter傳參。

4.經過mapGetters將stroe中的getter映射到局部計算屬性。

3.Mutation


1.狀態改變的惟一方法是提交mutation,經過在vue中調用$.store.commit來調用相應的mutation修改相應的狀態。

2.提交載荷:commit中能夠傳入額外的參數,來爲mutation提供參數,一般這個參數是一個對象。

3.對象風格的commit:commit能夠採用對象風格

  

4.可使用常量來代替Mutation事件類型 

5.mutation必須是同步函數

6.可使用mapMutations輔助函數將組件中的methods映射爲store.commit

4.Action


1.actions屬性中能夠定義異步操做

2.經過$.store.dispatch出發相應的方法

3.可使用mapActions輔助函數將組件中的methods映射爲store.dispatch調用

4.結合回調函數,能夠組合使用action(ES6 promise ?)

5.Module


1.應用的全部狀態集中到一個store中管理時store對象會變得很是臃腫,爲了解決這個問題,vuex容許使用module分模塊 。

2.命名空間:經過添加namespated:true是模塊成爲帶命名空間的模塊,這樣全部模塊內部的getter、action、mutation都會根據模塊註冊的路徑調整命名 。

3.使用了命名空間後getter、mutation和action的觸發:

  a. getter的第三個參數爲rootState,第四個參數爲rootGetters,這樣在getter中就能夠經過rootState和rootGetters訪問根節點的信息,而想觸發自己的getter和原來同樣。

  b. 若想在全局空間內分發action或提交mutation只須要在dispatch或commit的第三個參數中添加{root:true}便可

4.在帶命名空間的模塊中註冊全局 action,只須要在action中添加root:true,並將action的定義放在函數handler中便可

5.對於本身開發的插件若是提供了模塊,能夠給定插件的參數命名對象來容許用戶本身制定命名空間。

6.模塊動態註冊:registerModule() 

相關文章
相關標籤/搜索