vuex:
状态管理模式--->公共的数据仓库
1、安装(需先安装vue)
cnpm install vuex --save-dev
2、创建仓库 创建一个store文件夹 store/index.js
将vuex挂载在vue身上
import Vue from "vue";
import Vuex from "vuex";
Vue.use(Vuex);
const store= new Vuex.Store{}
export default store
3、store里面的状态不能够直接进行修改 而是必须通过mutations
state:存放的是公共的状态 辅助函数 mapState
mapState的用法由3种
1、computed: Vuex.mapState(["message","age"]),
2、computed: {
...Vuex.mapState(["message"])
},
3、computed: {
...Vuex.mapState({
msg:state=>state.message
})
},
mutations:用来修改state里面的数据 当前对象下面所有的函数都会接受到2个参数
参数1;是state
参数2:需要修改的值
特点
只能做同步操作
不能包含业务逻辑
不能操作异步
用途主要用来修改数据
辅助函数
mapMutations:辅助函数
actions:用来操作业务逻辑和异步操作
调用actions的时候必须通过dispatch进行触发actions里面的方法
edtion2
初始化
1、import Vue from "vue";
2、import Vuex from "vuex";
Vue.use(Vuex);
new Vue({
el:
Store
})
3、创建store
const Store = new Vuex.Store({
})
new Vuex.Store:有很多个属性
state mutations actions getters modules
数据(状态)(属性)-----state--------------------------------computed中用
this.$store.state.属性
辅助函数:mapState
1、引入vuex ,在computed里面将所需要的属性遍历出来
computed:{
(1)...Vuex.mapState(["属性","属性"])
(2)...Vuex.mapState({
key:state=>state.属性
})
}
2、修改数据---mutations---------------------methods里用
只要数据需要发生改变那么就必须调用mutations里面的方法
如果需要调用mutations里面的方法必须要用commit(参数1,参数2)
参数1:函数名称
参数2:需要传递的参数
辅助函数:mapMutations()
1、引入vuex ,在methods里面将所需要的方法遍历出来
methods:{
...Vuex.mapMutations({
key:"方法名"
})
}
通过commit的方式来触发mutations里面的方法
this.$store.commit(方法名称)
3、actions:操作异步和业务逻辑--------------------------methods里用
actions这个对象里面所有的方法都会由一个参数 (对象)----》commit.
当actions里面的方法触发的时候 会调用commit这个方法来触发mutations里面的方法
this.$store.dispatch("方法名称")
4.getters---------------computed里用
同computed,只不过computed是根据data里的值计算,
而getters根据state值计算
getters:计算属性 数据放在缓存 只要state里面的数据发生改变那么getter里面的方法就会被执行
辅助函数
mapGetters()
辅助函数
1、引入vuex ,在methods里面将所需要的方法遍历出来
methods:{
...vuex.mapActions({
key:"方法名"
})
}
modules:模块 作用是将所以的数据进行模块的拆分 而不是放在一个store里面这样不方便管理
注意在每个小模块导出的时候一定要去加命名空间 namespaced=true 这样就不会出现命名冲突
如果想要调用小模块里面的方法 则需要加上小模块的名称
例如
handleAdd:"goodsStore/handleAdd"
当组件操作状态的这时候->通过dispatch调用actions里面的方法(actions操作异步和业务逻辑)->actions里面的方法触发commit->commit执行后会触发mutations里面的方法
用来做数据的修改,当数据修改完毕后,state发生改变 数据是双向绑定的,因此view层的数据也会发生改变