2016-12-01 18 views
6

Biorąc pod uwagę następujący fragmentJak przekazać argument do funkcji odwzorowanych za pomocą ... mapActions (...)?

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

Chciałbym przekazać w parametrze do zwanych funkcjami. Nie mając pewności, jak to zrobić, zachowując połączenie ...mapAction(), musiałem przepisać następujące rzeczy.

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

Czy to jedyny sposób?

Odpowiedz

7

Możesz po prostu przekazać parametr do metody, w której ją wywołujesz. możesz wysłać tylko jeden parametr, który będzie dostępny w akcjach. Nie musisz robić nic specjalnego podczas korzystania mapActions

Na przykład można nazwać to lubią:

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

oraz w sklepie vuex:

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

i nadal można używać mapActions :

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

zobaczyć skrzypce here pracy: y ou widać parametr przekazany we wpisie :)


Oto realizacja mapActions z 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 
} 

Widać to bierze args minęło i umieszcza je jako drugi argument funkcji wysyłkowy .

Powiązane problemy