Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Javascript

त्रुटि:अपरिभाषित की संपत्ति 'सेटस्टेट' नहीं पढ़ सकता

जब आप पहली बार रिएक्ट घटकों को लिखना शुरू करते हैं, तो आप रास्ते में कई अलग-अलग त्रुटियों का सामना कर सकते हैं। ऐसी दो त्रुटियां हैं "अपरिभाषित की संपत्ति 'सेटस्टेट' नहीं पढ़ सकती" और "यह.सेटस्टेट एक फ़ंक्शन नहीं है"। यह लेख इन त्रुटियों को दूर करने के कुछ तरीकों पर एक नज़र डालता है।

क्यों?

ये त्रुटियां इसलिए होती हैं क्योंकि जिस विधि का आप उपयोग कर रहे हैं या अपने रिएक्ट कंपोनेंट में लागू कर रहे हैं वह सही ढंग से बाध्य नहीं है। यहां कोड का एक उदाहरण दिया गया है जिससे त्रुटि हो सकती है (यह मानता है कि आपने अपना रिएक्ट घटक सही तरीके से सेट किया है):

<पूर्व> "प्रतिक्रिया" से आयात प्रतिक्रिया; आयात "./styles.css"; क्लास ऐप रिएक्ट का विस्तार करता है। कॉम्पोनेंट {कन्स्ट्रक्टर (प्रॉप्स) {सुपर (प्रॉप्स); यह राज्य ={इनपुट:""}; } हैंडल चेंज (ई) { this.setState ({[e.target.name]:e.target.value})} रेंडर () {कंसोल.लॉग (यह.स्टेट) रिटर्न (

नमूना प्रतिक्रिया अनुप्रयोग

<इनपुट नाम ="इनपुट" onChange={this.handleChange} value={this.state.input} type="text" प्लेसहोल्डर="यहां टाइप करें..."/> <इनपुट टाइप ="सबमिट" />
); }} डिफ़ॉल्ट ऐप निर्यात करें;

पहली नज़र में, कोड ठीक दिखता है, लेकिन अगर हम करीब से देखते हैं, तो हम देखते हैं कि हैंडल चेंज विधि ऐप क्लास के लिए बाध्य नहीं है, इसलिए "यह" कीवर्ड इस उदाहरण में विंडो को संदर्भित करेगा। करीब से देखने के लिए, हैंडल चेंज विधि की पहली पंक्ति और फिर रेंडर की पहली पंक्ति दोनों में एक कंसोल.लॉग (यह) जोड़ें:

handleChange(e) { console.log(this, "change") this.setState({[e.target.name]:e.target.value}) }
रेंडर() { कंसोल.लॉग(यह, "रेंडर") रिटर्न ( 

नमूना प्रतिक्रिया आवेदन

<इनपुट नाम ="इनपुट" onChange={this.handleChange } value={this.state.input} type="text" प्लेसहोल्डर="यहां टाइप करें..."/> <इनपुट टाइप="सबमिट" />
); }

यदि हम एप्लिकेशन को लोड करते समय कंसोल पर एक नज़र डालते हैं, तो हम देखेंगे कि "यह" कीवर्ड ऐप को संदर्भित करता है। यदि हम अपने इनपुट का उपयोग करने का प्रयास करते हैं, तो हमें स्क्रीन पर एक त्रुटि मिलती है, लेकिन यदि हम कंसोल को देखते हैं, तो हम देखेंगे कि "यह" कीवर्ड विंडो ऑब्जेक्ट को संदर्भित करता है, ऐप को नहीं। इस समस्या को ठीक करने के दो तरीके हैं:

<एच4>1. बाइंड द मेथड

कंस्ट्रक्टर के अंदर, स्टेट ऑब्जेक्ट के बाद, इस लाइन को इनपुट करें:

 this.handleChange =this.handleChange.bind(this);

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

<एच4>2. ES6 एरो फंक्शन

बड़े तीर फ़ंक्शन के लिए ES6 सिंटैक्स का उपयोग करें। यह स्वचालित रूप से "इस" कीवर्ड को उस विधि से बांधता है, इसलिए आपको इसे कंस्ट्रक्टर में बांधने की आवश्यकता नहीं है:

हैंडल चेंज =(ई) => {this.setState({[e.target.name]:e.target.value})}

ये लो! प्रतिक्रिया में वर्ग घटक संरचना का उपयोग करते समय आप "this.setState" से "अपरिभाषित" या "फ़ंक्शन नहीं" त्रुटि से कैसे छुटकारा पाते हैं। यदि आप भविष्य में इन त्रुटियों को रोकना चाहते हैं, तो अपने रिएक्ट घटक को इसके बजाय रिएक्ट हुक के साथ कार्यात्मक घटकों का उपयोग करने के लिए पुन:सक्रिय करें!

81% प्रतिभागियों ने कहा कि बूटकैंप में भाग लेने के बाद उन्हें अपनी तकनीकी नौकरी की संभावनाओं के बारे में अधिक आत्मविश्वास महसूस हुआ। आज ही एक बूटकैंप से मिलान करें।

बूटकैंप शुरू करने से लेकर अपनी पहली नौकरी खोजने तक, औसत बूटकैंप ग्रेड ने करियर संक्रमण में छह महीने से भी कम समय बिताया।


  1. फिक्स एरर 0xC00D3E8E, प्रॉपर्टी केवल विंडोज 11/10 पर पढ़ी जाती है

    त्रुटि का सामना करना बहुत दर्दनाक है 0xC00D3E8E  Windows 10 कंप्यूटर पर किसी फ़ाइल को एक स्थान से दूसरे स्थान पर ले जाते समय। इस त्रुटि के कई कारण हो सकते हैं और उनका अनुमान लगाना कठिन है - लेकिन मुख्य कारण मेटाडेटा में त्रुटि है। हम दो सुधार सुझाते हैं जिनका उपयोग करके आप मीडिया फ़ाइल के मेटाडेटा क

  1. एक डिस्क पढ़ने में त्रुटि हुई [हल]

    यदि आप इस त्रुटि का सामना करते हैं, तो आप अपने विंडोज़ में बूट नहीं होंगे, और आप पुनरारंभ लूप में फंस जाएंगे। पूर्ण त्रुटि संदेश है डिस्क पढ़ने में त्रुटि हुई। पुनः आरंभ करने के लिए Ctrl+Alt+Del दबाएं” जिसका अर्थ है कि आपको अपने पीसी को पुनरारंभ करने के लिए Ctrl + Alt + Del दबाने की आवश्यकता है, आपक

  1. Android पर इनपुट $ पर पार्स त्रुटि ठीक करें

    पार्स त्रुटि एंड्रॉइड फोन पर होने वाली सबसे आम त्रुटियों में से एक है। यह त्रुटि डिवाइस पर किसी एप्लिकेशन की असफल स्थापना का परिणाम है। पार्सिंग समस्या के कारण त्रुटि उत्पन्न होती है, जिसे .apk पार्सर भी कहा जाता है। आमतौर पर, Google Play Store के बजाय किसी तृतीय-पक्ष स्रोत से ऐप इंस्टॉल करने में त्