javascript - Que signifie l'écriture de fonction suivante?
我想大声告诉你
我想大声告诉你 2017-06-26 10:56:52
0
2
726

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. .

我想大声告诉你
我想大声告诉你

répondre à tous(2)
伊谢尔伦

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)
}
扔个三星炸死你

this.setCart() est mappé à this.$store.commit('setCart')

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal