Maison > Questions et réponses > le corps du texte
Une fonction définie dans les mutations dans vuex et appelée dans le composant
//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});
}
}
Ma question est de savoir pourquoi il n'est pas nécessaire de passer le paramètre state lors de l'appel de la fonction setCart. Visuellement, si le paramètre state n'est pas passé lors de l'appel, la fonction addCart passera automatiquement l'état dans le magasin lors de son exécution. Ce principe, qu'est-ce que c'est ? ? C'est le code que j'ai écrit il y a un demi-mois, mais maintenant je ne le comprends pas. .
伊谢尔伦2017-06-26 10:58:52
Allez simplement regarder le code source et vous le saurez.
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
})
Ce qui suit est la définition de la méthode de commit
this.commit = function boundCommit (type, payload, options) {
// store 就是你想要的答案
return commit.call(store, type, payload, options)
}