@[toc]
8.4四个map方法的使用
8.4.1讲解生成代码函数mapState和mapGetters
<font color='red'>注意点1:</font>
问题:mapState干啥的?
<font color='red'>答案:</font>用来生成重复代码的,比如<font color='red'>return this.$store.state.xxxx</font>这段就非常重复,无法复用。其中<font color='red'>mapState采用{K:V}形式</font>,K为计算属性名或者方法名,V为属性名
sum(){
return this.$store.state.sum
},
school(){
return this.$store.state.school
},
subject(){
return this.$store.state.subject
},
---------------------------------------------------------------------------------
等同于
mounted() {
const x = mapState({he:'sum',xuexiao:'school',xueke:'subject'})
console.log(x)
}
打印结果:
<font color='red'>注意点2:</font>
问题:computed计算属性如何添加mapState?
<font color='red'>答案:</font>不能把mapState({he:'sum',xuexiao:'school',xueke:'subject'})直接放上去会报错为啥?因为mapState({he:'sum',xuexiao:'school',xueke:'subject'})返回的是一个{}对象,如果想使用,请使用ES6的语法,语法:<font color='red'>...mapState({}),其中...的作用是把mapState中的{}中的每一组展开放在computed计算属性中</font>
computed:{
...mapState({he:'sum',xuexiao:'school',xueke:'subject'})
}
8.4.2讲解生成代码函数mapMutations与mapActions
<font color='red'>注意点1:</font>
使用mapMutations与mapActions若需要传递参数,必须在绑定事件时就传参
比如:调用加的函数increment,使用原方法功能没问题,但是如果写成简写形式就会报错如图,错误原因就是绑定事件不传参,默认传递的时$event的触发事件,因为原方法知道把传参n传递过去,而简写方式并不知道传啥过去,就会默认把$event对象传递过去。
<button @click="increment">+</button>
//原方法,需要传递参数n
increment(){
this.$store.commit('JIA',this.n)
}
//简写方法
...mapMutations({increment:'JIA',decrement:'JIAN'}),
<font color='red'>解决方案:</font>绑定事件时就传参就行了
<button @click="increment(n)">+</button>
本人其他相关文章链接
1.《进阶篇第8章:vuex》包括理解vuex、安装vuex、搭建vuex环境、四个map方法的使用、模块化+名命空间
2.vue2知识点:理解vuex、安装vuex、搭建vuex环境
3.vue2知识点:vuex中四个map方法的使用
4.vue2知识点:模块化+名命空间
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。