⊗jsrxPmATRS 50 of 57 menu

Redux-da sorag statusyny ulanmak

Öňki sapaklarda biz goşmaça reýdýuserler ýardamynda aplikasiýamyzyň fetchProducts sorag iberende pending, fulfilled we rejected ekşenlerini iberýändigini düşündik. Indi biz ulanyja häzirki maglumat ýüklemek basgançagyny görkezip bileris.

Geliň öňki döreden önümler aplikasiýamyzy açalyň, onda ProductsList.jsx faýlyny açyň. Ilkinji etjek zadymyz, önüm kartajygy üçin aýratyn komponent döretmek ProductCard. Muny import setirlerinden soň, şol ýerde ProductsList funksiýasynyň öňünde edeliň. Prop hökmünde oňa product geçiriler:

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

Indi bolsa, return-daky boş ýuwarly ýaýlara önüm baradaky maglumatlary görkezmek üçin ähli kody dispProducts-dan geçiriler:

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> ) }

We ProductsList-da galan setiri aýyryň. Ona indi gerek däl:

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

Indi bolsa, ProductsList funksiýasynyň kodunyň başynda ýene birnäçe üýtgeýjiler döređeliň, error we content. Birinjisi biziň ýalňyşlygymyz üçin bolup, ikinjisine bolsa sorag statusyna baglylykda dürli mazmun ýazdyrarys. Muny const dataFetch = useRef(false)-dan öň edeliň:

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

Indi ProductsList komponentyň return buýrugyndan öň, şertli blok ýazalyň, content-a statusa baglylykda dürli mazmun ýazyljak. Ilkinji bolup 'in progress' statusyny düşündireris - bizim soragymyz iberilende. Bu ýagdaýda biz ulanyja maglumatlar ýüklenýändigini habar bolar:

if (productStatus === 'in progress') { content = <p>Önümleriň sanawy ýüklenýär ...</p> }

Eger ýüklemek üstünlikli tamamlansa (biz muny 'success' hökmünde belleýäris), onda biz alynan önümleriň sanawyny görkezmeli. Ony map bilen ProductCard komponenti ýardamynda görkezeris, oňa prop hökmünde product geçireris:

if (productStatus === 'in progress') { content = <p>Önümleriň sanawy ýüklenýär ...</p> } else if (productStatus === 'success') { content = products.map((product) => ( <ProductCard key={product.id} product={product} /> )) }

We iň soňky bar bolan statusymyz - 'fail'. Ony hem goşalyň. Bu ýerde ýokarda stateden ýalňyşlygy ýazdyran error üýtgeýjisini ulanalyň:

if (productStatus === 'in progress') { content = <p>Önümleriň sanawy ýüklenýär ...</p> } else if (productStatus === 'success') { content = products.map((product) => ( <ProductCard key={product.id} product={product} /> )) } else if (productStatus === 'fail') { content = <div>{error}</div> }

We iň soňky ädimde, return üçin kod blogynda köne {dispProducts}-y {content} bilen çalyşdyrarys.

Aplikasiýamyzy işledeliň, menýudan 'Products'-a tyklalyň. Hemme işleýär. Görýäris, şu ýaly 2 sekunt (serwerde bellemek ýaly) öz önüm goşmak formasyndan aşakda 'Products list loading ...' ýazgysy bar, soňra bolsa önümleriň sanawy peýda bolýar.

Okuwçylar bar aplikasiýaňyzy açyň. Onda StudentsList.jsx faýlyny açyň. Onda täze komponent dörediň StudentCard. Sapakda görkezilişi ýaly, ona kod ýazgyny dispStudents-dan geçiriň.

StudentsList funksiýasynda error we content üýtgeýjilerini dörediň. Sorag statusyna baglylykda content üýtgeýjisine mazmun ýazdyryň. Yzyna gaýtarylýan wersiýada köne dispStudents-y content bilen çalyşdyrmagy ýatdan çykarmaň.

Türkmen
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkçeЎзбекOʻzbekTiếng Việt
Biz sahypanyň işlemegi, analitika we şahsyýetleşdirmek üçin cookie ulanýarys. Maglumatlaryň işlenişi Gizlinlik syýasaty boýunça amala aşyrylýar.
hemmesini kabul et sazlamak ret et