1.创建一个vue项目
npm install --global vue-cli
vue init webpack my-project
cd my-project
npm install
npm run dev
2.安装使用vuex
npm install vuex --save
1. 新建strore文件夹 index.js用来创建vuex实例,然后我们在main.js文件中引入该文件,在文件里面添加 import store from ‘./store’;,再在vue实例全局引入store对象;
2.State
vuex中的数据源可以通过this.$store.state.count来获取
3.Getters
Getter相当于vue中的computed计算属性,getter 的返回值会根据它的依赖被缓存起来,且只有当它的依赖值发生了改变才会被重新计算,这里我们可以通过定义vuex的Getter来获取,Getters 可以用于监听、state中的值的变化,返回计算后的结果
4.Mutations
数据我们在页面是获取到了,但是如果我们需要修改count值怎么办?如果需要修改store中的值唯一的方法就是提交mutation来修改,我们现在Hello World.vue文件中添加两个按钮,一个加1,一个减1;这里我们点击按钮调用addFun(执行加的方法)和reductionFun(执行减法的方法),然后在里面直接提交mutations中的方法修改值;
5.Actions
我们达到了修改store中状态值的目的,但是,官方并不介意我们这样直接去修改store里面的值,而是让我们去提交一个actions,在actions中提交mutation再去修改状态值,接下来我们修改index.js文件,先定义actions提交mutation的函数:
好了,我们这里已经实现了一个基本的vuex修改状态值的完整流程,如果我们需要指定加减的数值,那么我们直接传入dispatch中的第二个参数,然后在actions中的对应函数中接受参数在传递给mutations中的函数进行计算;
6.mapState、mapGetters、mapActions
如果我们不喜欢这种在页面上使用“this.
s
t
r
o
e
.
s
t
a
t
e
.
c
o
u
n
t
”
和
“
t
h
i
s
.
stroe.state.count”和“this.
stroe.state.count”和“this.store.dispatch(‘funName’)”这种很长的写法,那么我们可以使用mapState、mapGetters、mapActions就不会这么麻烦了;
我们修改Hello World.vue文件如下: