vuex学习(二)

 参考:https://segmentfault.com/a/1190000015782272

vue 2.0+ 你的vue-cli项目中安装 vuex :

npm install vuex --save

然后 在src文件目录下新建一个名为vuex的文件夹,为方便引入并在vuex文件夹里新建一个index.js,里面的内容如下:

1 import Vue from 'vue';
2 import Vuex from 'vuex';
3 Vue.use(Vuex);
4 const store = new Vuex.Store({});
5  
6 export default store;

接下来,在 main.js里面引入store,然后再全局注入一下,这样一来就可以在任何一个组件里面使用this.$store了:

import Vuex from 'vuex'
import store from './vuex/index'//引入store
 
new Vue({
  el: '#app',
  router,
  store,//使用store
  template: '<App/>',
  components: { App }
})

说了上面的前奏之后,接下来就是纳入正题了,就是开篇说的state的玩法。回到vuex文件的index.js里面,我们先声明一个state变量,并赋值一个空对象给它,里面随便定义两个初始属性值;然后再在实例化的Vuex.Store里面传入一个空对象,并把刚声明的变量state仍里面:

 1 import Vue from 'vue';
 2 import Vuex from 'vuex';
 3 Vue.use(Vuex);
 4  const state={//要设置的全局访问的state对象
 5      showFooter: true,
 6      changableNum:0
 7      //要设置的初始属性值
 8    };
 9  const store = new Vuex.Store({
10        state
11     });
12  
13 export default store;

实际上做完上面的三个步骤后,你已经可以用this.$store.state.showFooter或this.$store.state.changebleNum在任何一个组件里面获取showfooter和changebleNum定义的值了,但这不是理想的获取方式;vuex官方API提供了一个getters,和vue计算属性computed一样,来实时监听state值的变化(最新状态),并把它也仍进Vuex.Store里面,具体看下面代码:

 1 import Vue from 'vue';
 2 import Vuex from 'vuex';
 3 Vue.use(Vuex);
 4  const state={   //要设置的全局访问的state对象
 5      showFooter: true,
 6      changableNum:0
 7      //要设置的初始属性值
 8    };
 9 const getters = {   //实时监听state值的变化(最新状态)
10     isShow(state) {  //方法名随意,主要是来承载变化的showFooter的值
11        return state.showFooter
12     },
13     getChangedNum(){  //方法名随意,主要是用来承载变化的changableNum的值
14        return state.changebleNum
15     }
16 };
17 const store = new Vuex.Store({
18        state,
19        getters
20 });
21 export default store;

光有定义的state的初始值,不改变它不是我们想要的需求,接下来要说的就是mutations了,mutattions也是一个对象,这个对象里面可以放改变state的初始值的方法,具体的用法就是给里面的方法传入参数state或额外的参数,然后利用vue的双向数据驱动进行值的改变,同样的定义好之后也把这个mutations扔进Vuex.Store里面,如下:

原文地址:https://www.cnblogs.com/wanqingcui/p/10781293.html