- मान लीजिए कि मेरे पास एक रिएक्ट क्लास पी है, जो दो बच्चे वर्गों, सी 1 और सी 2 का प्रतिपादन करता है।
- C1 में एक इनपुट फ़ील्ड है। मैं इस इनपुट फ़ील्ड को फू के रूप में संदर्भित करूंगा।
- मेरा लक्ष्य फू में परिवर्तन के लिए C2 पर प्रतिक्रिया देना है।
मैं दो समाधानों के साथ आया हूँ, लेकिन दोनों में से कोई भी सही नहीं है।
पहला उपाय:
- असाइन पी एक राज्य,
state.input
। onChange
P में एक फंक्शन बनाएं , जो किसी ईवेंट में होता है और सेट होता हैstate.input
।onChange
C1 के रूप में इसे पास करेंprops
, और F1this.props.onChange
को C1 को बांधने देंonChange
।
यह काम। जब भी फू का मूल्य बदलता है, यह setState
पी में ट्रिगर करता है , तो पी में C2 पास करने के लिए इनपुट होगा।
लेकिन यह एक ही कारण के लिए काफी सही नहीं लगता है: मैं एक बच्चे के तत्व से एक मूल तत्व की स्थिति निर्धारित कर रहा हूं। यह प्रतिक्रिया के डिजाइन सिद्धांत को धोखा देता है: एकल-दिशा डेटा प्रवाह।
क्या यह है कि मैं इसे कैसे करने वाला हूं, या एक और अधिक प्रतिक्रिया-प्राकृतिक समाधान है?
दूसरा उपाय:
पी में सिर्फ फू डालें।
लेकिन क्या यह एक डिजाइन सिद्धांत है जिसका मुझे पालन करना चाहिए जब मैं अपने ऐप को तैयार करता हूं - सभी फॉर्म तत्वों render
को उच्चतम-स्तरीय वर्ग में डाल रहा हूं ?
मेरे उदाहरण की तरह, अगर मेरे पास C1 का एक बड़ा प्रतिपादन है, तो मैं वास्तव में P के पूरे render
C1 को render
सिर्फ इसलिए नहीं रखना चाहता क्योंकि C1 में एक तत्व है।
मैं इसे कैसे करूं?