javascript - Was bedeutet das Schreiben der folgenden Funktion?
我想大声告诉你
我想大声告诉你 2017-06-26 10:56:52
0
2
727

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

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

Antworte allen(2)
伊谢尔伦

去看看源码就知道了。

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

this.setCart()被映射为this.$store.commit('setCart')

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage