一、普通store中使用mapState、mapGetters輔助函數:
在src目錄下建立store文件夾:
index.js如下:
vue提供了注入機制,就是把我們的store 對象注入到根實例中。vue的根實例就是 new Vue構造函數,然后在所有的子組件中this.$store 來指向store 對象。在index.js 中,我們用export store把store已經暴露出去了,然后直接在main.js中引入store並注入store即可。
子組件中的computed屬性是根據它的依賴自動更新的,所以只要store中的state發生變化,它就會自動變化,在一般情況下子組件中獲取store中屬性的方式如下:
通過computed屬性可以獲取到狀態值,但是組件中每一個屬性(如:count)都是函數,如果有10個,那么就要寫10個函數,且重復寫10遍return this.$store.state不是很方便。vue 提供了mapState函數,它把state直接映射到我們的組件中。
當然使用mapState之前要先引入它,它兩種用法,或接受一個對象,或接受一個數組,其中使用對象的方式又有三種方法。
對象用法如下:
當映射的計算屬性的名稱與state的子節點名稱相同時,我們也可以給 mapState傳一個字符串數組。
如果我們組件內部也有computed屬性怎么辦?它又不屬於mapState,我們可以使用es6中的對象分割語法,把mapState函數生成的對象再分割成一個個的,就像最開始的時候我們一個一個羅列計算屬性,有10個屬性,我們就寫10個函數。
二、Module中使用mapState、mapGetters、mapActions輔助函數:
在src目錄下建立store文件夾:
其中:
collection.js
footerStatus.js:
index.js:
假如我們想在組件中使用module中的state、getters、mutations、actions,那該如何使用呢?
除了和普通store一樣需要在main.js中注入store外,具體方法如下: