2016-12-01 7 views
6

निम्नलिखित मार्ग को ध्यान में रखतेमैप किए गए कार्यों के लिए एक तर्क कैसे पास करें ... mapActions (...)?

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

मैं बुलाया कार्यों में एक पैरामीटर में पारित करने के लिए करना चाहते हैं। ...mapAction() कॉल को बनाए रखने के दौरान निश्चित रूप से ऐसा करने के लिए निश्चित नहीं है, मुझे निम्नलिखित को फिर से लिखना पड़ा।

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

क्या यह एकमात्र तरीका है?

उत्तर

7

आप विधि को पैरामीटर पास कर सकते हैं, जहां आप इसे कॉल कर रहे हैं। आप केवल एक पैरामीटर भेज सकते हैं, जो क्रियाओं में उपलब्ध होगा।

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

और vuex दुकान में:: आप आप इसे पसंद कॉल कर सकते हैं जब mapActions

का उपयोग कर उदाहरण के लिए कुछ भी विशेष करने की जरूरत नहीं है

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

और आप अभी भी mapActions उपयोग कर सकते हैं :

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

काम करने वाली पहेली देखें here: y कहां चेतावनी :)


यहाँ में पैरामीटर पारित कर देख सकते हैं से 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 
} 

mapActions के कार्यान्वयन आप देख सकते हैं यह args पारित कर लेता है और उन्हें प्रेषण समारोह का एक दूसरा तर्क के रूप में डालता है ।

संबंधित मुद्दे