Heim > Fragen und Antworten > Hauptteil
Eine Funktion, die in Mutationen in Vuex definiert und in der Komponente aufgerufen wird
//store.js在mutations中定义
addCart:function (state,{goodIndex,foodIndex}) {
state.goods[goodIndex].foods[foodIndex].count++;
},
//组件中调用
methods:{
...mapMutations(['addCart','removeCart','setCart']),
addCartItem:function(){
this.setCart({goodIndex:this.goodIndex,foodIndex:this.foodIndex});
}
}
Meine Frage ist, warum beim Aufruf der Funktion setCart der Statusparameter nicht übergeben werden muss. Wenn der Statusparameter beim Aufruf nicht übergeben wird, übergibt die Funktion addCart bei der Ausführung automatisch den Status. Dieses Prinzip Was ist das? ? Dies ist der Code, den ich vor einem halben Monat geschrieben habe, aber jetzt verstehe ich ihn nicht. .
伊谢尔伦2017-06-26 10:58:52
去看看源码就知道了。
export const mapMutations = normalizeNamespace((namespace, mutations) => {
const res = {}
normalizeMap(mutations).forEach(({ key, val }) => {
val = namespace + val
res[key] = function mappedMutation (...args) {
if (namespace && !getModuleByNamespace(this.$store, 'mapMutations', namespace)) {
return
}
// 在这里调用了commit方法
return this.$store.commit.apply(this.$store, [val].concat(args))
}
})
return res
})
下面是commit方法的定义
this.commit = function boundCommit (type, payload, options) {
// store 就是你想要的答案
return commit.call(store, type, payload, options)
}