2016-12-01 22 views
6

Aradım fonksiyonlarına bir parametre geçmek istiyorum aşağıdaki pasajıBir argümanı, mapActions (...) kullanarak eşlenen işlevlere nasıl geçirilir?

export default { 
    methods: { 
    ...mapActions(["updateData", "resetData"]); 
    } 
} 

düşünürsek. ...mapAction() numaralı çağrıyı hala korurken, düzgün bir şekilde nasıl yapılacağından emin değilim, aşağıdakilere yeniden yazmak zorunda kaldım.

export default { 
    methods: { 
    // ...mapActions(["updateData", "resetData"]) 
    updateData: function() { this.$store.dispatch("updateData", "names") }, 
    resetData: function() { this.$store.dispatch("resetData"); } 
    } 
} 

Bu tek yol mu?

cevap

7

Parametreyi, çağırdığınız yöntemle iletebilirsiniz. Sadece eylemlerde mevcut olacak bir parametre gönderebilirsiniz.

<button @click=updateData({data1: 1, data2: 2})> 

ve vuex deposunda: Örneğin

mapActions kullanırken sizin gibi diyebilirsiniz özel bir şey yapmak zorunda değilsiniz

const actions = { 
    updateData: (state, data) => { 
    //You will get passed parameter as data here 
    }, 

ve hala mapActions kullanabilirsiniz :

export default { 
    methods: { 
    ...mapActions(["updateData", "resetData"]); 
    } 
} 

keman here çalışma bkz: y ou alarma :) İşte


parametreyi geçti görebilirsiniz vuex repo

export function mapActions (actions) { 
    const res = {} 
    normalizeMap(actions).forEach(({ key, val }) => { 
    res[key] = function mappedAction (...args) { 
     return this.$store.dispatch.apply(this.$store, [val].concat(args)) 
    } 
    }) 
    return res 
} 

den mapActions uygulanması Bunu args geçti alır ve sevk fonksiyonunun ikinci argüman olarak koyar görebilirsiniz olduğu .