javascript - प्रतिक्रिया संदर्भ बनाम प्रतिक्रिया Redux, मुझे हर एक का उपयोग कब करना चाहिए?




reactjs react-redux (4)

प्रतिक्रिया 16.3.0 जारी की गई थी और Context एपीआई अब एक प्रयोगात्मक विशेषता नहीं है। डैन अब्रामोव (रेडक्स के निर्माता) ने इस बारे में here एक अच्छी टिप्पणी लिखी थी, लेकिन यह 2 साल का था जब संदर्भ अभी भी एक प्रायोगिक विशेषता थी।

मेरा प्रश्न है, आपकी राय / अनुभव में मुझे रिएक्ट रिडक्स पर प्रतिक्रिया संदर्भ का उपयोग कब करना चाहिए और इसके विपरीत?


  • यदि आपको विभिन्न प्रयोजनों के लिए मिडलवेयर का उपयोग करने की आवश्यकता है। उदाहरण के लिए लॉगिंग एक्शन, एरर रिपोर्टिंग, सर्वर की प्रतिक्रिया के आधार पर अन्य अनुरोधों को भेजना, आदि।
  • जब कई समापन बिंदुओं से आने वाला डेटा एकल घटक / दृश्य को प्रभावित करता है।
  • जब आप अपने अनुप्रयोगों में क्रियाओं पर अधिक नियंत्रण रखना चाहते हैं। Redux ट्रैकिंग क्रियाओं और डेटा परिवर्तन को सक्षम करता है, यह डीबगिंग को बहुत सरल करता है।
  • यदि आप अपने एप्लिकेशन की स्थिति को सीधे बदलने के लिए सर्वर प्रतिक्रिया नहीं चाहते हैं। Redux एक परत जोड़ता है, जहाँ आप यह तय कर सकते हैं कि यह डेटा कब, कैसे और क्यों लागू किया जाना चाहिए। पर्यवेक्षक पैटर्न। पूरे ऐप में कई पब्लिशर्स और सब्सक्राइबर बनाने के बजाय, आप घटकों को Redux स्टोर से कनेक्ट करें।

से: Redux का उपयोग कब करें?


के रूप में संदर्भ अब एक प्रायोगिक विशेषता नहीं है और आप सीधे अपने आवेदन में संदर्भ का उपयोग कर सकते हैं और डेटा को गहराई से नेस्टेड घटकों को पास करने के लिए महान होने जा रहा है जो इसके लिए डिज़ाइन किया गया था।

जैसा कि मार्क एरिकसन ने अपने blog में लिखा है:

यदि आप केवल सहारा लेने से बचने के लिए Redux का उपयोग कर रहे हैं, तो संदर्भ Redux की जगह ले सकता है - लेकिन तब शायद आपको पहले स्थान पर Redux की आवश्यकता नहीं थी।

प्रसंग भी आपको Redux DevTools , आपके राज्य अपडेट्स का पता लगाने की क्षमता, केंद्रीकृत एप्लिकेशन लॉजिक जोड़ने के लिए middleware , और Redux सक्षम होने वाली अन्य शक्तिशाली क्षमताओं की तरह कुछ भी नहीं देता है।

Redux बहुत अधिक शक्तिशाली है और बड़ी संख्या में सुविधाएँ प्रदान करता है जो Context Api प्रदान नहीं करता है, जैसा कि @danAbritov ने भी उल्लेख किया है।

रिएक्ट Redux संदर्भ का आंतरिक रूप से उपयोग करता है, लेकिन यह सार्वजनिक एपीआई में इस तथ्य को उजागर नहीं करता है। इसलिए आपको सीधे प्रतिक्रिया Redux के माध्यम से संदर्भ का उपयोग करके अधिक सुरक्षित महसूस करना चाहिए क्योंकि यदि यह बदल जाता है, तो कोड को अपडेट करने का भार रिएक्ट रेडक्स पर होगा और आप पर नहीं।

इसके Redux तक वास्तव में नवीनतम संदर्भ एपीआई के साथ पालन करने के लिए इसके कार्यान्वयन को अद्यतन करें

नवीनतम संदर्भ एपीआई उन अनुप्रयोगों के लिए उपयोग किया जा सकता है जहां आप बस घटक के बीच डेटा पास करने के लिए Redux का उपयोग कर रहे होंगे, हालांकि अनुप्रयोग जो केंद्रीकृत डेटा का उपयोग करते हैं और Redux redux-thunk या redux-saga का उपयोग करते हुए एक्शन रचनाकारों में API अनुरोध को संभालते हैं उन्हें अभी भी redux की आवश्यकता होगी। इसके अलावा Redux में redux-persist जैसी अन्य लाइब्रेरी जुड़ी हुई हैं, जो आपको लोकलस्टोरेज में स्टोर डेटा को सेव करने और रिफ्रेश पर रीहाइड्रेट करने की अनुमति देती हैं, जो कि संदर्भ एपीआई अभी भी समर्थन नहीं करता है।

जैसा कि @dan_abramov ने अपने ब्लॉग में उल्लेख किया है कि आपको Redux की आवश्यकता नहीं हो सकती है , उस Redux में उपयोगी अनुप्रयोग है

  • एक स्थानीय भंडारण के लिए जारी रखें और फिर उसमें से बूट करें, बॉक्स से बाहर।
  • सर्वर पर पूर्व-भरण स्थिति, इसे क्लाइंट को HTML में भेजें, और इसे बूट करें, बॉक्स से बाहर।
  • उपयोगकर्ता की कार्रवाइयों को सीरियल करें और उन्हें स्टेट स्नैपशॉट के साथ स्वचालित बग रिपोर्ट के साथ संलग्न करें, ताकि उत्पाद डेवलपर्स
    त्रुटियों को पुन: उत्पन्न करने के लिए उन्हें फिर से खेलना चाहिए।
  • कोड को कैसे लिखा जाता है, इसके लिए नाटकीय बदलाव के बिना सहयोगी वातावरण को लागू करने के लिए नेटवर्क पर एक्शन ऑब्जेक्ट पास करें।
  • एक पूर्ववत इतिहास बनाए रखें या कोड कैसे लिखा जाता है इसके लिए नाटकीय बदलाव के बिना आशावादी उत्परिवर्तन को लागू करें।
  • विकास में राज्य के इतिहास के बीच यात्रा करें, और कोड के बदल जाने पर क्रिया इतिहास से वर्तमान स्थिति का पुनर्मूल्यांकन करें।
  • विकास टूलिंग के लिए पूर्ण निरीक्षण और नियंत्रण क्षमता प्रदान करें ताकि उत्पाद डेवलपर्स उनके लिए कस्टम टूल का निर्माण कर सकें
    क्षुधा।
  • अधिकांश व्यावसायिक तर्क का पुन: उपयोग करते हुए वैकल्पिक UI प्रदान करें।

इन कई अनुप्रयोगों के साथ इसकी बहुत जल्द ही यह कहना है कि Redux को नए संदर्भ API द्वारा बदल दिया जाएगा


मैं API कॉल करने (Axios का उपयोग करके) के लिए redux-thunk के साथ redux का उपयोग करना पसंद करता हूं और reducers की प्रतिक्रिया भेज रहा हूं। यह साफ और समझने में आसान है।

कॉन्टेक्ट एपीआई स्टोर पर कैसे रिएक्ट घटक जुड़े हुए हैं, इस पर प्रतिक्रिया-रिडक्स भाग के लिए बहुत विशिष्ट है। इसके लिए, प्रतिक्रिया-रिडक्स अच्छा है। लेकिन यदि आप चाहते हैं, क्योंकि प्रसंग आधिकारिक रूप से समर्थित है, तो आप प्रतिक्रिया-रिड्यूक्स के बजाय प्रसंग एपीआई का उपयोग कर सकते हैं।

तो, सवाल कॉन्टेक्ट एपीआई बनाम प्रतिक्रिया-रिडक्स होना चाहिए, न कि कॉन्टेक्ट एपीआई बनाम रिडक्स। साथ ही, सवाल थोड़ा राय का है। चूंकि, मैं प्रतिक्रिया-रिडक्स से परिचित हूं और सभी परियोजनाओं में इसका उपयोग करता हूं, इसलिए मैं इसका उपयोग करना जारी रखूंगा। (मुझे बदलने के लिए कोई प्रोत्साहन नहीं है)।

लेकिन अगर आप आज सिर्फ Redux सीख रहे हैं, और आपने कहीं भी इसका इस्तेमाल नहीं किया है, तो यह Context API को एक शॉट देने के लायक है और आपके कस्टम कॉन्टेक्स्ट API कोड के साथ रिएक्ट-रिडक्स को बदल देगा। हो सकता है, यह बहुत साफ है।

व्यक्तिगत रूप से, यह परिचित का सवाल है। एक दूसरे को चुनने का कोई स्पष्ट कारण नहीं है क्योंकि वे समकक्ष हैं। और आंतरिक रूप से, प्रतिक्रिया-रिडक्स संदर्भ मार्ग का उपयोग करता है।


यदि आप Redux का उपयोग केवल गहरे घोंसले वाले घटकों के नीचे गुजरने से बचने के लिए कर रहे हैं , तो आप Redux को Context एपीआई के साथ बदल सकते हैं। यह इस उपयोग के मामले के लिए बिल्कुल इरादा है।

दूसरी ओर, यदि आप Redux का उपयोग बाकी सब चीजों के लिए कर रहे हैं (एक अनुमान के अनुसार स्टेट कंटेनर होने पर, अपने घटकों के बाहर अपने ऐप के तर्क को संभालते हुए, सभी राज्य अपडेट्स का इतिहास रखते हुए, Redux DevTools , Redux Undo , Reduxist का उपयोग करते हुए) Redux Form , Redux Saga , Redux Logger , etc…), तो आपके लिए Redux को Context API से बदलने का कोई कारण नहीं है।

और व्यक्तिगत रूप से, मुझे लगता है कि Redux DevTools एक्सटेंशन एक अद्भुत, कम करके आंका गया डिबगिंग टूल है, जो Redux का उपयोग करते रहने के लिए अपने आप को सही ठहराता है। लेकिन यह महज मेरी राय है। :)

संदर्भ:







react-context