1.安裝Vuex
首先在 vue 2.0+ 你的vue-cli項目中安裝 vuex :vue
npm install vuex --save
而後 在src文件目錄下新建一個名爲store的文件夾,爲方便引入並在store文件夾裏新建一個index.js,裏面的內容以下:vuex
import Vue from 'vue'; import Vuex from 'vuex'; Vue.use(Vuex); const store = new Vuex.Store(); export default store;
接下來,在 main.js裏面引入store,而後再全局注入一下,這樣一來就能夠在任何一個組件裏面使用this.$store了:vue-cli
import store from './store'//引入store new Vue({ el: '#app', router, store,//使用store template: '<App/>', components: { App } })
2.獲取state:
說了上面的前奏以後,接下來就是歸入正題了,就是開篇說的state的玩法。回到store文件的index.js裏面,咱們先聲明一個state變量,並賦值一個空對象給它,裏面隨便定義兩個初始屬性值;而後再在實例化的Vuex.Store裏面傳入一個空對象,並把剛聲明的變量state仍裏面:npm
import Vue from 'vue'; import Vuex from 'vuex'; Vue.use(Vuex); const state={//要設置的全局訪問的state對象 showFooter: true, changableNum:0 //要設置的初始屬性值 }; const store = new Vuex.Store({ state }); export default store;
作完上面的步驟,你已經能夠用this.$store.state.showFooter或this.$store.state.changebleNum在任何一個組件裏面獲取showfooter和changebleNum定義的值了,但這不是理想的獲取方式;app
3.獲取方式getters
vuex官方API提供了一個getters,和vue計算屬性computed同樣,來實時監聽state值的變化(最新狀態),並把它也扔進Vuex.Store裏面,具體看下面代碼:函數
import Vue from 'vue'; import Vuex from 'vuex'; Vue.use(Vuex); const state={ //要設置的全局訪問的state對象 showFooter: true, changableNum:0 //要設置的初始屬性值 }; const getters = { //實時監聽state值的變化(最新狀態) isShow() { //方法名隨意,主要是來承載變化的showFooter的值 return state.showFooter }, getChangedNum(){ //方法名隨意,主要是用來承載變化的changableNum的值 return state.changebleNum } }; const store = new Vuex.Store({ state, getters }); export default store;
咱們能夠經過this.$store.getters.isShow和 this.$store.getters.getChangedNum 來獲取this
4.mapGetters 輔助函數
mapGetters 輔助函數僅僅是將 store 中的 getter 映射到局部計算屬性:code
import { mapGetters } from 'vuex' export default { // ... computed: { // 使用對象展開運算符將 getter 混入 computed 對象中 ...mapGetters([ 'doneTodosCount', 'anotherGetter', // ... ]) } }