आज, हम आपको घटकों की स्थिति के साथ काम करने पर दो हाथों की कक्षाओं को पूरा करने का सुझाव देते हैं। विशेष रूप से, आज के कार्यों का प्रदर्शन करते हुए, आप न केवल गुणों की अवधारणा को बेहतर ढंग से समझ सकते हैं, बल्कि प्रतिक्रिया-अनुप्रयोगों को डीबग करने पर भी काम कर सकते हैं जिसमें त्रुटियां हैं।

→
भाग 1: पाठ्यक्रम अवलोकन, प्रतिक्रिया की प्रतिक्रिया के कारण, ReactDOM और JSX→
भाग 2: कार्यात्मक घटक→
भाग 3: घटक फाइलें, परियोजना संरचना→
भाग 4: माता-पिता और बच्चे के घटक→
भाग 5: एक TODO आवेदन, स्टाइलिंग की मूल बातें पर काम शुरू→
भाग 6: पाठ्यक्रम की कुछ विशेषताओं के बारे में, जेएसएक्स और जावास्क्रिप्ट→
भाग 7: इनलाइन शैली→
भाग 8: TODO आवेदन पर काम जारी रखा, घटकों के गुणों से परिचित→
भाग 9: घटक गुण→
भाग 10: घटक गुणों और स्टाइल के साथ काम करने पर कार्यशाला→
भाग 11: डायनेमिक मार्कअप जेनरेशन और मैप एरे विधि→
भाग 12: कार्यशाला, एक TODO आवेदन पर काम का तीसरा चरण→
भाग 13: वर्ग-आधारित घटक→
भाग 14: वर्ग-आधारित घटकों, घटक स्थिति पर कार्यशाला→
भाग 15: घटक स्वास्थ्य कार्यशालाएँ→
भाग 16: TODO अनुप्रयोग, ईवेंट हैंडलिंग पर काम का चौथा चरण→
भाग 17: TODO अनुप्रयोग पर काम का पांचवा चरण, घटकों की स्थिति को संशोधित करता है→
भाग 18: TODO आवेदन पर काम का छठा चरण→
भाग 19: घटक जीवन चक्र विधियाँभाग 20: सशर्त प्रतिपादन में पहला पाठ→
भाग 21: सशर्त प्रतिपादन पर दूसरा पाठ और कार्यशाला→
भाग 22: TODO आवेदन पर काम का सातवां चरण, बाहरी स्रोतों से डेटा डाउनलोड करना→
भाग 23: रूपों के साथ काम करने पर पहला पाठ→
भाग 24: दूसरा रूप पाठ→
भाग 25: रूपों के साथ काम करने पर कार्यशाला→
भाग 26: अनुप्रयोग वास्तुकला, कंटेनर / घटक पैटर्न→
भाग 27: पाठ्यक्रम परियोजनापाठ 27. कार्यशाला। घटक स्थिति डिबगिंग
→
मूल▍Zadanie
App.js
create-react-app
द्वारा बनाए गए एक मानक रिएक्ट एप्लिकेशन के
App.js
फ़ाइल से नीचे
App
क्लास कोड का विश्लेषण करें। यह कोड अधूरा है, इसमें त्रुटियां हैं।
import React from "react" class App extends Component() { return ( <div> <h1>{this.state.name}</h1> <h3><font color="#3AC1EF">▍{this.state.age} years old</font></h3> </div> ) } export default App
क्लास-आधारित
App
कंपोनेंट में कंस्ट्रक्टर नहीं होता है, इसकी स्थिति को इनिशियलाइज़ नहीं किया जाता है, लेकिन जब यह वापस लौटता है, तो इसका मतलब यह होता है कि इसमें कुछ डेटा के साथ एक स्टेट है।
आपका कार्य इस कोड को एक उपयोगी स्थिति में लाना है।
यदि आपके पास कोई अज्ञात त्रुटि संदेश आता है - तो समाधान देखने के लिए जल्दी मत करो। उदाहरण के लिए, स्वयं को आज़माएं, कोड को ध्यान से पढ़ें और इंटरनेट पर समस्या के बारे में जानकारी की तलाश करें, त्रुटि के कारण का पता लगाएं और इसे ठीक करें। डिबगिंग कोड एक मूल्यवान कौशल है जिसे वास्तविक परियोजनाओं पर काम करते समय आपको निश्चित रूप से आवश्यकता होगी।
▍Reshenie
एक वर्ग का शरीर एक कार्यात्मक घटक के शरीर के समान है। इसमें केवल
return
कमांड शामिल है, लेकिन कक्षाओं के आधार पर घटकों में, इस कमांड का उपयोग
render()
विधि में किया जाता है, और कक्षा के शरीर में नहीं। इसे ठीक करें।
import React from "react" class App extends Component() { render() { return ( <div> <h1>{this.state.name}</h1> <h3><font color="#3AC1EF">▍{this.state.age} years old</font></h3> </div> ) } } export default App
यदि हम कोड का विश्लेषण जारी रखते हैं, तो ब्राउज़र में प्रदर्शित त्रुटि संदेशों को देखते हुए, हम यह समझ सकते हैं कि हालांकि
class App extends Component
का निर्माण
class App extends Component
काफी सामान्य दिखता है, लेकिन
Component
के नाम से हम जो भी संदर्भित करते हैं उसके साथ कुछ गड़बड़ है। समस्या यह है कि आयात कमांड में,
import React from "react"
आयात करें, हम केवल
React
आयात करते हैं, लेकिन
Component
नहीं, परियोजना में। यही है, हमें या तो इस आदेश को संपादित करने की आवश्यकता है, इसे
import React, {Component} from "react"
फॉर्म
import React, {Component} from "react"
में
class App extends React.Component
, फिर क्लास बनाते समय हम मौजूदा कोड का उपयोग कर सकते हैं, या इस रूप में क्लास डिक्लेरेशन को फिर से लिख सकते हैं:
class App extends React.Component
। हम पहले विकल्प पर ध्यान केंद्रित करेंगे। अब घटक कोड इस तरह दिखता है:
import React, {Component} from "react" class App extends Component() { render() { return ( <div> <h1>{this.state.name}</h1> <h3><font color="#3AC1EF">▍{this.state.age} years old</font></h3> </div> ) } } export default App
सच है, समस्याएं खत्म नहीं होती हैं। एप्लिकेशन काम नहीं करता है, ब्राउज़र में एक
TypeError: Cannot set property 'props' of undefined
त्रुटि संदेश दिखाई देता है
TypeError: Cannot set property 'props' of undefined
, हमें सूचित किया जाता है कि वर्ग घोषणा की पहली पंक्ति के साथ कुछ गलत है।
यहाँ बिंदु यह है कि एक घटक की घोषणा करते समय, जिसे, जैसा कि हम पहले से ही समझ चुके हैं, एक घटक है जो एक वर्ग पर आधारित है, मूल वर्ग के नाम के बाद कोष्ठक की एक जोड़ी दिखाई देती है। उन्हें यहां ज़रूरत नहीं है, यह एक कार्यात्मक घटक नहीं है, इसलिए हम उनसे छुटकारा पा लेंगे। अब एप्लिकेशन कोड अधिक या कम व्यावहारिक हो जाता है, वर्ग पर आधारित घटक अब पूरी तरह से गलत नहीं दिखता है, लेकिन सिस्टम हमें त्रुटियों की रिपोर्ट करना जारी रखता है। अब त्रुटि संदेश इस तरह दिखता है:
TypeError: Cannot read property 'name' of null
। जाहिर है, यह एक घटक राज्य में संग्रहीत डेटा का उपयोग करने के प्रयास को संदर्भित करता है जिसे अभी तक प्रारंभ नहीं किया गया है। इसलिए, अब हम इसमें
super()
कॉल करने के लिए भूल गए बिना एक क्लास कंस्ट्रक्टर बनाएंगे, और इसमें उस वैल्यू को जोड़कर कंपोनेंट की स्थिति को इनिशियलाइज़ करेंगे, जिसके साथ कंपोनेंट काम करने की कोशिश कर रहा है।
यहाँ
App
घटक के लिए तैयार काम कोड है:
import React, {Component} from "react" class App extends Component { constructor() { super() this.state = { name: "Sally", age: 13 } } render() { return ( <div> <h1>{this.state.name}</h1> <h3><font color="#3AC1EF">▍{this.state.age} years old</font></h3> </div> ) } } export default App
यहां बताया गया है कि ब्राउज़र में एप्लिकेशन पेज कैसा दिखेगा।
ब्राउज़र में एप्लिकेशन पेजपाठ 28. कार्यशाला। घटक राज्य, राज्य में संग्रहीत डेटा के साथ काम करते हैं
→
मूलइस अभ्यास सत्र में, आपके पास घटकों की स्थिति के साथ काम करने का एक और मौका होगा।
▍Zadanie
नीचे कार्यात्मक घटक का कोड है। इसके आधार पर, निम्नलिखित करें:
- इसे परिवर्तित करें ताकि घटक में एक राज्य हो।
- घटक स्थिति में
isLoggedIn
गुण होना चाहिए, जो उपयोगकर्ता द्वारा लॉग इन किए जाने पर तार्किक मान को true
isLoggedIn
है, और अगर हमारे मामले में कोई "लॉगऑन" तंत्र नहीं है, तो false
है, इसी मूल्य को मैन्युअल रूप से सेट किया जाना चाहिए, जब राज्य आरंभीकृत होता है)। - यह सुनिश्चित करने का प्रयास करें कि यदि उपयोगकर्ता लॉग इन है, तो घटक
You are currently logged in
पाठ को You are currently logged in
जिसे You are currently logged in
, और यदि नहीं, तो वह टेक्स्ट जिसे You are currently logged out
। यह कार्य वैकल्पिक है, यदि आपको इसके कार्यान्वयन में कठिनाइयाँ हैं, तो आप उदाहरण के लिए, इंटरनेट पर विचारों की खोज कर सकते हैं।
यहाँ
App.js
फ़ाइल के लिए कोड है:
import React from "react" function App() { return ( <div> <h1>You are currently logged (in/out)</h1> </div> ) } export default App
▍Reshenie
हमारे पास हमारे निपटान में एक कार्यात्मक घटक है। इसे राज्य से लैस करने के लिए, इसे कक्षा के आधार पर एक घटक में तब्दील किया जाना चाहिए और इसके राज्य को आरंभ करना चाहिए। यहां बताया गया है कि परिवर्तित घटक कोड क्या है:
import React from "react" class App extends React.Component { constructor() { super() this.state = { isLoggedIn: true } } render() { return ( <div> <h1>You are currently logged (in/out)</h1> </div> ) } } export default App
आवेदन के स्वास्थ्य की जाँच करें।
ब्राउज़र में अनुप्रयोगवास्तव में, यदि आप स्वयं इस बिंदु पर पहुंच गए हैं, तो इसका मतलब है कि आपने पाठ्यक्रम में सामग्री को कक्षाओं और घटकों के राज्य के आधार पर सीखा है। अब हम एक वैकल्पिक कार्य में लगे रहेंगे।
संक्षेप में, इस असाइनमेंट को पूरा करने के लिए हमें जो करने की आवश्यकता है, उस पर एक पाठ में चर्चा की जाएगी जो सशर्त प्रतिपादन पर केंद्रित है, इसलिए यहां हम थोड़ा आगे बढ़ते हैं। इसलिए, हम एक वैरिएबल की घोषणा करने और उसे शुरू करने जा रहे हैं, जिसमें
isLoggedIn
स्टेट
isLoggedIn
में संग्रहीत किए गए स्ट्रिंग के आधार पर या
out
स्ट्रिंग होगी। हम इस चर के साथ
render()
विधि में काम करेंगे, पहले डेटा का विश्लेषण करेंगे और उसमें वांछित मूल्य लिखेंगे, और फिर जेएसएक्स कोड में इसका उपयोग घटक द्वारा वापस किया जाएगा। यहाँ हमने क्या किया:
import React from "react" class App extends React.Component { constructor() { super() this.state = { isLoggedIn: true } } render() { let wordDisplay if (this.state.isLoggedIn === true) { wordDisplay = "in" } else { wordDisplay = "out" } return ( <div> <h1>You are currently logged {wordDisplay}</h1> </div> ) } } export default App
कृपया ध्यान दें कि
wordDisplay
चर
render()
विधि में घोषित एक साधारण स्थानीय चर है, इसलिए, इस विधि के अंदर इसे एक्सेस करने के लिए, आपको बस इसका नाम निर्दिष्ट करना होगा।
अब आवेदन पृष्ठ कैसा दिखेगा:
ब्राउज़र में एप्लिकेशन पेजisLoggedIn
राज्य
isLoggedIn
true
सेट
true
, इसलिए
You are currently logged in
गया पाठ पृष्ठ पर प्रदर्शित होता है। पाठ प्रदर्शित करने के लिए
You are currently logged out
आपको घटक कोड में,
isLoggedIn
का मान
false
पर बदलने की आवश्यकता है।
यह ध्यान दिया जाना चाहिए कि इस समस्या को अन्य तरीकों से हल किया जा सकता है। लेकिन हमने जो कोड प्राप्त किया है वह स्पष्ट और कुशल है, इसलिए हम उस पर ध्यान
isLoggedIn
करेंगे, हालांकि, उदाहरण के लिए, यह देखते हुए कि
isLoggedIn
एक तार्किक चर है,
if (this.state.isLoggedIn === true)
स्थिति को फिर से लिखा जा सकता है जैसे
if (this.state.isLoggedIn)
।
परिणाम
आज आपने घटकों की स्थिति के साथ काम करने का अभ्यास किया, विशेष रूप से, कोड में त्रुटियों को ठीक किया, एक कार्यात्मक घटक को कक्षाओं के आधार पर संसाधित किया, और सशर्त प्रतिपादन में लगे। अगली बार आपके पास एक और व्यावहारिक काम और एक नया विषय होगा।
प्रिय पाठकों! क्या आपने यहां प्रस्तुत व्यावहारिक कार्यों में से पहले को पूरा करके सभी त्रुटियों को खोजने और ठीक करने का प्रबंधन किया था?
