मैं वर्तमान में टाइपस्क्रिप्ट के लिए एक रिएक्ट एप्लिकेशन को माइग्रेट कर रहा हूं। अब तक, यह बहुत अच्छी तरह से काम करता है, लेकिन मुझे render
अपने फ़ंक्शन घटकों के क्रमशः मेरे कार्यों के रिटर्न प्रकारों के साथ एक समस्या है ।
अब तक, मैंने हमेशा JSX.Element
रिटर्न टाइप के रूप में उपयोग किया था , अब यह किसी भी अधिक काम नहीं करता है यदि कोई घटक किसी भी चीज़ को रेंडर नहीं करने का निर्णय लेता है , यानी रिटर्न null
, क्योंकि null
कोई मान्य मूल्य नहीं है JSX.Element
। यह मेरी यात्रा की शुरुआत थी, क्योंकि अब मैंने वेब खोजा और पाया कि आपको ReactNode
इसके बजाय उपयोग करना चाहिए , जिसमें null
कुछ और चीजें भी शामिल हैं जो हो सकती हैं। यह बेहतर दांव लग रहा था।
हालाँकि, अब एक फंक्शन कंपोनेंट बनाते समय टाइपस्क्रिप्ट ReactNode
टाइप के बारे में शिकायत करता है । फिर, कुछ खोज के बाद, मैंने पाया कि फ़ंक्शन घटकों के लिए आपको ReactElement
इसके बजाय उपयोग करना चाहिए । हालाँकि, यदि मैं ऐसा करता हूं, तो संगतता समस्या दूर हो जाती है, लेकिन अब टाइपस्क्रिप्ट पुनः null
वैध मूल्य नहीं होने के बारे में शिकायत करता है।
इसलिए, एक लंबी कहानी को छोटा करने के लिए, मेरे पास तीन प्रश्न हैं:
- और
JSX.Element
, के बीच अंतर क्या है ?ReactNode
ReactElement
- क्यों
render
वर्ग घटकों के तरीकों वापसीReactNode
, लेकिन समारोह घटकों वापसीReactElement
? - मैं इसे सम्मान के साथ कैसे हल करूं
null
?
class Example extends Component<ExampleProps> {
कक्षाओं के लिए औरconst Example: FunctionComponent<ExampleProps> = (props) => {
फ़ंक्शन घटकों के लिए कुछ ऐसा दिखना चाहिए (जहांExampleProps
अपेक्षित सहारा के लिए एक इंटरफ़ेस है)। और फिर इन प्रकारों में पर्याप्त जानकारी है कि वापसी प्रकार का अनुमान लगाया जा सकता है।