suchen

Heim  >  Fragen und Antworten  >  Hauptteil

javascript - Was bedeutet das Schreiben der folgenden Funktion?

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

我想大声告诉你我想大声告诉你2714 Tage vor738

Antworte allen(2)Ich werde antworten

  • 伊谢尔伦

    伊谢尔伦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)
    }

    Antwort
    0
  • 扔个三星炸死你

    扔个三星炸死你2017-06-26 10:58:52

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

    Antwort
    0
  • StornierenAntwort