क्या दो नामांकित vuex मॉड्यूल के बीच क्रियाओं को भेजने का एक तरीका है?


159

क्या नामांकित मॉड्यूल के बीच किसी कार्रवाई को भेजना संभव है?

उदाहरण के लिए, मेरे पास vuex मॉड्यूल "गेमबोर्ड" और "सूचना" है। प्रत्येक नामांकित हैं। मैं गेमबोर्ड से सूचना मॉड्यूल में एक कार्रवाई भेजना चाहता हूं।

मुझे लगा कि मैं मॉड्यूल नाम का उपयोग प्रेषण क्रिया नाम में इस तरह कर सकता हूं:

// store/modules/gameboard.js
const actions = {
    myaction ({dispatch}) {
        ...
        dispatch('notification/triggerSelfDismissingNotifcation', {...})
    }
}

// store/modules/notification.js
const actions = {
    triggerSelfDismissingNotification (context, payload) {
        ...
    }
}

लेकिन जब मैं ऐसा करने की कोशिश करता हूं तो मुझे ऐसी त्रुटियां मिलती हैं जो मुझे परेशान करती हैं क्योंकि मेरे गेमबोर्ड मॉड्यूल के भीतर एक क्रिया को भेजने की कोशिश कर रहा है:

[vuex] अज्ञात स्थानीय क्रिया प्रकार: सूचना / ट्रिगरSelfDismissingNotification, वैश्विक प्रकार: गेमबोर्ड / अधिसूचना / ट्रिगरSelfDismissingNotification

क्या vuex मॉड्यूल से मॉड्यूल को भेजने का एक तरीका है या क्या मुझे रूट vxx उदाहरण में किसी प्रकार का पुल बनाने की आवश्यकता है?

जवाबों:


344

आपको केवल यह निर्दिष्ट करने की आवश्यकता है कि आप रूट संदर्भ से भेज रहे हैं:

// from the gameboard.js vuex module
dispatch('notification/triggerSelfDismissingNotifcation', {...}, {root:true})

अब जब प्रेषण जड़ तक पहुंच जाता है तो उसके पास सूचना मॉड्यूल (रूट उदाहरण के सापेक्ष) के लिए सही नाम स्थान पथ होगा।

यह आप namespaced: trueअपने vuex स्टोर मॉड्यूल पर सेट कर रहे हैं मान रहा है ।


39
यह एक समाधान के लिए मेरी खोज के लिए इंटरनेट पर एकमात्र हिट है। जवाब के लिए धन्यवाद।
पीटर रोहलेन

9
निष्पक्ष होने के लिए, इसे "Namespaced Modules में ग्लोबल एसेट्स एक्सेस करना" पर यहाँ vuex.vuejs.org/en/modules.html डॉक्यूमेंट किया गया है । हालाँकि यह अंदर लेने के लिए अजीब है।
जेक

2
मुझे वाउ से प्यार है, लेकिन मुझे ऐसा लगता है कि वीयूएक्स मुश्किल की परतों को जोड़ता है बजाय इसे सरल बनाने के। अब मुझे पता है कि यह vuex का उद्देश्य नहीं है, लेकिन फिर भी, क्या यह कष्टप्रद नहीं है कि मुझे हमेशा इस उदाहरण में कुछ सम्मेलनों के बारे में पता होना चाहिए notification/trigger, तो अगर मैं चाहता हूं कि यह थोड़ा और अधिक सामान्य हो ${NOTIF_TYPE_NAME}/${NOTIF_TRIGGER_ACTION}, मैं अभी भी करता हूं स्लैश की जरूरत है, या यहां तक ​​कि इसके लिए एक सहायक फ़ंक्शन भी बनाएं, मुझे लगता है कि जब मैं चाहता हूं कि मेरा ऐप अधिक मॉड्यूलर हो जाए तो मैं जितना मिलता हूं उससे अधिक भुगतान करता हूं। यह मेरी राय है
दिमा गिम्बर्ग

11
आप उपयोग कर सकते हैं this.dispatch। इसकी जरूरत नहीं है {root: true}। यह वैश्विक है।
MKatleast3

6
नहीं, आपको उपयोग करना है {root: true}। आपके द्वारा उपयोग किए जाने वाला मामला संभवतः चाइल्ड मॉड्यूल को भेज रहा है, जो वास्तव में (और जाहिर है) इस ध्वज की आवश्यकता नहीं है।
कुरस

0

जैसा कि mencioned @ MKatleast3

आप उपयोग कर सकते हैं this.dispatch{root: true}प्रेषण विकल्पों में इसकी आवश्यकता नहीं है । यह वैश्विक है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.