一、情景说明
上一节,我们学会在vc
的computed
模块中,使用mapState和mapGetters
来简化代码
这一节,我们学习在vc
的methods
模块中,使用mapMutations和mapActions
来简化代码
在vc
的methods
中,我们会使用到store
的dispatch
和commit
。
如果涉及到许多的方法都要用到store
那么,这个时候,就可以用mapMutations和mapActions
来简化代码
其中,mapMutations
对应commit
mapActions
对应dispatch
二、案例
引入mapMutations和mapActions
import {mapState,mapGetters,mapMutations,mapActions} from 'vuex'
index.js
中的配置
//准备actions 用于响应组件中的动作
const actions = {
jiaOdd(context,value){
console.log('actions中的jiaOdd被调用了')
if(context.state.sum % 2){
context.commit('JIA',value)
}
},
jiaWait(context,value){
console.log('actions中的jiaWait被调用了')
setTimeout(()=>{
context.commit('JIA',value)
},500)
}
};
//准备mutations 用于操作数据state
const mutations = {
JIA(state,value){
console.log('mutations中的JIA被调用了')
state.sum += value
},
JIAN(state,value){
console.log('mutations中的JIAN被调用了')
state.sum -= value
}
};
vc
组件中methods
模块代码
两种写法,看情况使用文章来源:https://www.toymoban.com/news/detail-828342.html
methods: {
//借助mapMutations生成对应的方法,方法中会调用commit去联系mutations(对象写法)
...mapMutations({increment:'JIA',decrement:'JIAN'}),
//借助mapMutations生成对应的方法,方法中会调用commit去联系mutations(数组写法)
// ...mapMutations(['JIA','JIAN']),
/* ************************************************* */
//借助mapActions生成对应的方法,方法中会调用dispatch去联系actions(对象写法)
...mapActions({incrementOdd:'jiaOdd',incrementWait:'jiaWait'})
//借助mapActions生成对应的方法,方法中会调用dispatch去联系actions(数组写法)
// ...mapActions(['jiaOdd','jiaWait'])
},
vc
中html
代码,使用methods
时,通过html
代码方式传入参数文章来源地址https://www.toymoban.com/news/detail-828342.html
<button @click="increment(n)">+</button>
<button @click="decrement(n)">-</button>
<button @click="incrementOdd(n)">当前求和为奇数再加</button>
<button @click="incrementWait(n)">等一等再加</button>
到了这里,关于Vue2:Vuex中使用mapMutations和mapActions的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!