⊗jsrxPmATRS 50 of 57 menu

Redux में अनुरोध स्थिति का उपयोग

पिछले पाठों में हमने अतिरिक्त रिड्यूसर की मदद से वर्णन किया था कि हमारे एप्लिकेशन को क्या करना चाहिए, यदि fetchProducts अनुरोध भेजते समय एक्शन pending, fulfilled और rejected भेजता है। अब हम उपयोगकर्ता को दिखा सकते हैं कि डेटा लोड होने की प्रक्रिया किस स्तर पर है।

आइए उत्पादों वाला हमारा एप्लिकेशन खोलें, और उसमें ProductsList.jsx फ़ाइल खोलें। सबसे पहले, हम उत्पाद कार्ड के लिए एक अलग कंपोनेंट ProductCard बनाएंगे। इसे इम्पोर्ट लाइनों के ठीक बाद ProductsList फ़ंक्शन से पहले बनाएंगे। प्रॉप्स के रूप में हम इसे product पास करेंगे:

const ProductCard = ({ product }) => { return () }

और अब खाली गोल कोष्ठक return में उत्पाद डेटा दिखाने का सारा कोड dispProducts से स्थानांतरित कर देंगे:

const ProductCard = ({ product }) => { return ( <div key={product.id} className="product-excerpt"> <h3>{product.name}</h3> <SellerOfProd sellerId={product.seller} /> <p>{product.desc.substring(0, 100)}</p> <UserReactions product={product} /> <Link to={`/products/${product.id}`} className="link-btn"> view </Link> </div> ) }

और ProductsList में बची हुई लाइन कोड हटा देंगे। अब इसकी जरूरत नहीं है:

const dispProducts = products.map((product) => ())

और अब ProductsList फ़ंक्शन के कोड की शुरुआत में कुछ और वेरिएबल बनाएंगे, error और content। पहला हमारे पास एरर के लिए होगा, दूसरे में हम अनुरोध की स्थिति के आधार पर अलग-अलग कंटेंट डालेंगे। इसे const dataFetch = useRef(false) से पहले करेंगे:

const error = useSelector((state) => state.products.error) let content

अब कंपोनेंट ProductsList के return कमांड से पहले कोड का एक ब्लॉक लिखेंगे शर्तों के साथ, जिसमें content में स्थिति के आधार पर अलग-अलग कंटेंट डाला जाएगा। सबसे पहले हम स्थिति 'in progress' का वर्णन करेंगे - जब हमारा अनुरोध भेजा गया है। इस स्थिति में हम उपयोगकर्ता को बताएंगे कि डेटा लोड हो रहा है:

if (productStatus === 'in progress') { content = <p>Products list loading ...</p> }

यदि हमारा लोडिंग सफल रहा (हमने इसे 'success' के रूप में दर्शाया था), तो हमें प्राप्त उत्पादों की सूची दिखानी है। इसे map में ProductCard कंपोनेंट की मदद से दिखाएंगे, जिसे प्रॉप्स के रूप में product पास करेंगे:

if (productStatus === 'in progress') { content = <p>Products list loading ...</p> } else if (productStatus === 'success') { content = products.map((product) => ( <ProductCard key={product.id} product={product} /> )) }

और आखिरी स्थिति, जो हमारे पास है - वह 'fail' है। इसे भी जोड़ देंगे। यहाँ error वेरिएबल का उपयोग करेंगे, जिसमें हमने ऊपर स्टेट से एरर डाला था:

if (productStatus === 'in progress') { content = <p>Products list loading ...</p> } else if (productStatus === 'success') { content = products.map((product) => ( <ProductCard key={product.id} product={product} /> )) } else if (productStatus === 'fail') { content = <div>{error}</div> }

और आखिरी कदम के रूप में हम return के लिए बने कोड ब्लॉक में पुराने {dispProducts} को {content} से बदल देंगे।

अपना एप्लिकेशन चलाएं, मेन्यू में 'Products' पर क्लिक करें। सब काम करता है। देखते हैं कि लगभग 2 सेकंड (जैसा कि हमने सर्वर पर सेट किया था) उत्पाद जोड़ने के फॉर्म के नीचे 'Products list loading ...' लिखा दिख रहा है, और फिर उत्पादों की सूची आ जाती है।

छात्रों वाला अपना एप्लिकेशन खोलें। उसमें StudentsList.jsx फ़ाइल खोलें। उसमें एक नया कंपोनेंट StudentCard बनाएँ। dispStudents से कोड इसमें स्थानांतरित कर दें, जैसा कि पाठ में दिखाया गया है।

StudentsList फ़ंक्शन में error और content वेरिएबल बनाएँ। content वेरिएबल को अनुरोध की स्थिति के आधार पर कंटेंट असाइन करें। लौटाए गए कोड में पुराने dispStudents को content से बदलना न भूलें।

हिन्दी
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
हम साइट के कार्य, विश्लेषण और व्यक्तिगतकरण के लिए कुकीज़ का उपयोग करते हैं। डेटा प्रसंस्करण गोपनीयता नीति के अनुसार किया जाता है।
सभी स्वीकार करें कॉन्फ़िगर करें अस्वीकार करें