import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
export default new Vuex.Store({
state: {
//类似于data
},
mutations: {
//类似于method,用来操作state,每个mutations的第一个形参都是state
},
actions {
//异步操作,来异步执行mutations,第一个入参都是context,用context.commit('')来调用mutations
},
getters: {
//类似于computed,第一个入参也都是state,必须用return来返回结果
}
})
在.vue中怎么使用store?
第一种方式:
this.$store.state.xxx //获取state中的数据
this.$store.getters.xxx //获取getters中的数据
this.$store.commit('mutationsname',param1,param2...) //调用mutations中的函数,可以传参数
this.$store.dispatch('actionsname',param1,param2...) //调用actions中的函数,可以加入参
第二种方式:
//在script的开头加import
import { mapState, mapGetters, mapMutations, mapActions} from 'vuex'
//在computed中引入state和getters, 直接按照data的方式使用
computed: {
//将store里的state映射为计算属性
...mapState(['count']),
//将getters里的数据映射为计算属性
...mapGetters(['showNum'])
},
//在method中引入mutations和actions
methods: {
...mapMutations(['minus','minusN']),
...mapActions(['minusAsync']),
sub(){
this.minus()
},
subN(){
this.minusN(3)
}
}
...