Vuex是一个专门服务于Vue.js应用的状态管理工具。适用于中大型应用。Vuex中有一些专有概念需要先了解下:
- State:用于数据的存储,是store中的唯一数据源;
- Getter:类似于计算属性,就是对State中的数据进行二次的处理,比如筛选和对多个数据进行求值等。
- Mutation:类似事件,是改变Store中数据的唯一途径,只能进行同步操作。
- Action:类似Mutation,通过提交Mutation来改变数据,而不直接操作State,可以进行异步操作。
- Module:当业务复杂的时候,可以把store分成多个模块进行管理,便于维护。
对于这几个概念有各种对应的map辅助函数用来简化操作,比如mapState,如下三种写法其实是一个意思,都是为了从state中获取数据,并且通过计算属性返回给组件使用。
computed:{
count(){
return this.$store.state.count
},
...mapState({
count:state=>state.count
}),
...mapState('[count]')
}
又比如mapMutation,以下两种函数的定义方式要实现的功能是一样的,都是要提交一个mutation去改变state中的数据:
methods:{
increment(){
this.$store.commit