Vuex中的四个map方法的使用

335 阅读2分钟

Vuex中的四个map方法的使用

介绍四个map方法之前先介绍一个es6语法 ...

... 是es6中的展开运算符,作用是把数组或对象一一展开,

如:
let a = {
    x:100,
    y:200
}
let b = {
    neo:1,
    ...a,
    two:2
}
//b的结果就是:{neo:1,x:100,y:200,two:2}

介绍完展开运算符下面开始正式介绍Vux中的四个map方法

1.mapState方法:用于帮助我们映射state中的数据为计算属性

mapState方法会在$store.state中找数据,并把找的数据返回

语法:mapState(要找的数据)

computed:{
    //借助mapState生成计算属性,sum、school、subject(对象写法)
    ...mapState({sum:'sum',school:'school',subject:'subject'}),
    
    //借助mapState生成计算属性,sum、school、subject(数组写法)
    ...mapState(['sum','school','subject'])
}

2.mapGetters方法:用于帮助我们映射getter中的数据为计算属性

mapGetters方法会在$store.getters中找数据,并把找的数据返回

computed{
    //借助mapGetters生成计算属性:bigSum(对象写法)
    ...mapGetters({bigSum:'bigSum'}),
    //借助mapGetters生成计算属性:bigSum(数组写法)
    ...mapGetters([bigSum:'bigSum'])
}

3.mapActions方法:用于帮助我们生成与actions对话的方法,即包含$store.dispatch(xxx)的函数

mapActions方法会调用$store.dispatch来访问actions中的方法,并把匹配的方法返回

computed:{
    //借助mapActions生成对应方法,方法会调用dispatch来联系actions(对象写法)
    ...mapActions({addOdd:'jiaodd',waitAdd:'wait'}),
​
    //借助mapActions生成对应方法,方法会调用dispatch来联系actions(素组写法)
    ...mapActions(['jiaodd','wait'])
}   

4.mapMutations方法:用于帮助我们生成mutations对话的方法,既:包含$store.commit(xxx)的函数

mapMutations方法会调用$store.commit来访问mutations中的方法,并把匹配的方法放回

computed:{
    //借助mapMutations生成对应方法,方法会调用commit来联系mutations(对象写法)
    ...mapMutations({bonus:'JIA',impairment:'JIAN'}),
​
    //借助mapMutations生成对应方法,方法会调用commit来联系mutations(数组写法)
    ...mapMutations(['JIA','JIAN'])
}

注意事项

mapActions与mapMutations使用时,若需要传递参数需要:在模板中绑定事件时传递好参数,否则参数是事件对象

如:<button @click="JIA(value)"></button>

Vuex中的map方法中的数组写法,数组的值必须与store中所存在的值名一样,并且模板中的数据也得一致

正确示范:
const state={
    n:1
}
computed:{
    ...mapState(['n'])
}
//在模板中
<h3>n的值是{{n}}</h3>