मैं एक jQuery अनुप्रयोग में पहली बार रेडक्स का उपयोग कर रहा हूं और मैंने छोटे अवलोकन कार्यान्वयन को बनाया है। अवलोकन, राज्य वस्तु के कई गुणों पर परिवर्तनों का जवाब दे रहे हैं, जब राज्य स्वयं बदलता है तो डोम में परिवर्तन कर रहा है। यदि मेरे अवलोकन योग्य कॉलबैक को अपने कार्य को पूरा करने के लिए 2 संपत्ति मानों की आवश्यकता है, तो मैं दोनों मानों का पालन करूंगा और फिर UI को अपडेट करने के लिए उन मानों का उपयोग करूंगा। अवलोकन राज्य को छूते नहीं हैं। वे इसे कॉलबैक में देखने योग्य में प्रस्तुत करते हैं ताकि इसका उपयोग यूआई को राज्य के साथ अपडेट करने के लिए किया जा सके।Redux में getState का उपयोग एक विरोधी पैटर्न है?
जिस परियोजना पर मैं काम कर रहा हूं वह एक रिफैक्टर है इसलिए मैं इस तथ्य के बाद रेडक्स जोड़ रहा हूं। कभी-कभी, मुझे एहसास होता है कि मुझे कोड के एक टुकड़े में एक विशिष्ट राज्य संपत्ति की आवश्यकता है कि मेरे पास एक अवलोकन योग्य में सही ढंग से प्रतिक्रिया करने का समय न हो। उन मामलों में, मैं स्टोर पर getState
पर कॉल करता हूं जो मुझे चाहिए और इसके साथ आगे बढ़ें। मैं इस दृष्टिकोण की तरह महसूस करने में मदद नहीं कर सकता थोड़ा सा दोषपूर्ण है।
store.getState
का उपयोग कर रहा है जहां कभी मुझे इसे एक विरोधी पैटर्न माना जाता है? क्या उनके स्पष्ट उपयोग-मामले हैं जिन्हें मुझे store.getState
का उपयोग करते समय टालना चाहिए?
मैं कार्यों के जवाब में अपने राज्य को अद्यतन करने के लिए reducers का उपयोग कर रहा हूँ। राज्य के लिए केवल प्रतिक्रिया ही मेरे अवलोकनों को बदलती है डीओएम अपडेट करें। यह देखते हुए कि यह एक रिएक्ट ऐप नहीं है, अगर मैं देखने योग्य नहीं हूं तो मैं अपने यूआई को अपडेट करने के लिए और कैसे जानूंगा? –
ठीक है, मैं आपकी समस्या देखता हूं। आपके यूआई में रेडक्स कंटेनर स्टेटस को जोड़ने से कुछ भी नहीं है। उस स्थिति में, मैं संभवतः राज्य के विशिष्ट टुकड़ों को प्रसारित करने के लिए एक ईवेंट एमिटर का उपयोग करता हूं (जब वे बदलते हैं) उन jQuery घटकों को प्रसारित करते हैं जिन्हें उनकी आवश्यकता होती है - हर बार जब आपके reducers राज्य के एक टुकड़े को बदलते हैं, तो घटक जो घटना पंजीकृत कर सकते हैं डीओएम में आवश्यक परिवर्तन। आप वैश्विक स्थिति को पार करने और घटक अलगाव में सुधार से बचेंगे। – Anchor
जहां तक आप गणना की गई राज्य के लिए अवलोकनों का उपयोग करते हैं, मुझे लगता है कि यह ठीक है। हालांकि, एक पुस्तकालय है जिसे [reselect] कहा जाता है (https: // github।com/rackt/reselect) की इस तरह के उपयोग-मामले के लिए अत्यधिक अनुशंसा की जाती है और इनपुट को याद दिलाती है। – Anchor