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', // ... ]) } }