क्या मुझे अपने सभी घटकों को React.memo () के साथ लपेटना चाहिए, अगर यह किसी भी प्रॉपर की उम्मीद नहीं कर रहा है?
हालांकि यह स्पष्ट है कि React
डिफ़ॉल्ट रूप से अपने सभी कार्यात्मक घटक को React.memo क्यों नहीं करता है, और हमें जरूरत पड़ने पर अपने कार्यात्मक घटकों को लपेटना चाहिए।
मेरे मामले में, मेरे पास इस तरह की संरचना के साथ एक बड़ी प्रतिक्रिया परियोजना है:
const MyBigApp = () => {
const shouldShowX = useSelector(getShouldShowX);
const shouldShowY = useSelector(getShouldShowY);
// Many more selectors
return (
<>
{shouldShowX && <ComplexComponentX />}
{shouldShowY && <ComplexComponentY />}
{/* many more components based on different selectors like above */}
</>
);
};
मेरे सभी व्यावसायिक तर्क Redux के अंदर हैं और घटक useSelector
स्टोर से डेटा प्राप्त करने के लिए आंतरिक रूप से उपयोग करते हैं।
क्या यह मेरे सभी बाल घटकों को लपेटने के लिए समझ में आता है React.memo
, क्योंकि रूट स्तर पर किसी भी चयनकर्ता में परिवर्तन मेरे पूरे ऐप को फिर से प्रस्तुत करने का कारण बनता है?
इससे पहले कि connect
हम स्वचालित रूप से एक ज्ञापन घटक प्राप्त कर रहे थे जो कि कस्टम प्रॉप्स की तुलना कर रहा था और स्टोर वैल्यू को कंपोनेंट के रूप में पास कर दिया गया था, तो क्या अब हमें मैन्युअल रूप से हमेशा ऐसा करना चाहिए कि किसी भी प्रॉम्प्ट React.memo
का उपयोग useSelector
न हो?
जवाब
मेरा तर्क है कि आपको React.memo
उन बाल घटकों के लिए उपयोग करने पर विचार करना चाहिए जो किसी भी सहारा को स्वीकार नहीं करते हैं। मैं इस लेख की अत्यधिक अनुशंसा करता हूं:https://dmitripavlutin.com/use-react-memo-wisely/
2.1 घटक अक्सर एक ही रंगमंच
की सामग्री के साथ प्रदान करता है । React.memo () में एक घटक लपेटने का सबसे अच्छा मामला है जब आप कार्यात्मक घटक को अक्सर और आमतौर पर एक ही सहारा के साथ प्रस्तुत करने की उम्मीद करते हैं।
चूंकि जिन घटकों के बारे में आप पूछ रहे हैं, वे किसी भी सहारा को स्वीकार नहीं करते हैं, इसका मतलब है कि रंगमंच की सामग्री कभी नहीं बदलेगी। इसलिए, यह इस कारण से है कि उपयोग से रेंडर साइकिल से बचा React.memo
जा सकता है। एक ही लेख से इस महत्वपूर्ण चेतावनी पर ध्यान दें:
5. React.memo () एक प्रदर्शन संकेत है
सख्ती से, प्रतिक्रिया एक प्रदर्शन संकेत के रूप में संस्मरण का उपयोग करता है।जबकि अधिकांश स्थितियों में रिएक्ट एक ज्ञापन घटक को प्रस्तुत करने से बचता है, आपको उस पर भरोसा नहीं करना चाहिए ताकि प्रतिपादन को रोका जा सके।