简化模板中插值语法中的表达式。
mapState
用于帮助我们映射state
中的数据为计算属性
mapGetters
用于帮助我们映射getters
中的数据为计算属性
mapActions
用于帮助我们生成与actions
对话的方法,即包含$store.dispatch(xxx)
的函数,传递的参数需要在绑定事件时携带,否则参数是事件对象
mapMutations
用于帮助我们生成与mutations
对话的方法,即包含$store.commit(xxx)
的函数,传递的参数需要在绑定事件时携带,否则参数是事件对象
import {mapState,mapGetters,mapMutations,mapActions} from 'vuex'
computed:{
//借助mapState生成计算属性,从stste中读取数据(对象写法)
//...mapState({he:'sum',xuexiao:'school'})
//借助mapState生成计算属性,从stste中读取数据(数组写法),自定义计算属性名与state中对应属性名一致
...mapState(['sum','school']) ,
//借助mapGetters生成计算属性,从getters中读取数据(数组写法)
...mapGetters(['bigSum'])
}
methods:{
//借助mapMutations生成对应的方法方法中会调用commit去联系mutations
//...mapMutations({add:'ADD',subt:'SUBT'})
//数组写法
...mapMutations(['ADD','SUBT'])
//借助mapActions生成对应的方法方法中会调用dispatch去联系actions,传递的参数需要在事件触发时携带
...mapActions(['addOdd'])
}
优化示例
优化前详情
优化后,通过计算属性模板中可以直接使用sum
methods: {
// add(){
// // this.sum += this.n
// // this.$store.dispatch("add",this.n)
// this.$store.commit("ADD",this.n)
// },
// subt(){
// // this.sum -= this.n
// // this.$store.dispatch("subt",this.n)
// this.$store.commit("SUBT",this.n)
// },
...mapMutations(["ADD","SUBT"]),
...mapActions(["addOdd","addWait"])
// addOdd(){
// // if(this.sum % 2){
// // this.sum += this.n
// // }
// this.$store.dispatch("addOdd",this.n)
// },
// addWait(){
// // setTimeout(() => {
// // this.sum += this.n
// // }, 1000);
// this.$store.dispatch("addWait",this.n)
// }
},
computed:{
...mapState(['sum']),
...mapGetters(['bigSum'])
}