⊗jsrxPmATRS 50 of 57 menu

Sorğunun statusunun Redux-də tətbiqi

Əvvəlki dərslərdə biz əlavə reducerlər vasitəsilə tətbiqimizin nə etməli olduğunu təsvir etdik, əgər fetchProducts sorğu zamanı aksiyalar pending, fulfilledrejected göndərirsə. İndi biz istifadəçiyə məlumatların yüklənməsinin hazırda hansı mərhələdə olduğunu göstərə bilərik.

Gəlin məhsullarla olan tətbiqimizi açaq, onda ProductsList.jsx faylını açaq. İlk olaraq, ayrıca bir komponent yaradacağıq ProductCard məhsul kartı üçün. Bunu dərhal import sətirlərindən sonra edək ProductsList funksiyasından əvvəl. Props kimi ona product ötürəcəyik:

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

İndi isə boş dəyirmi mötərizələrə return dispProducts-dən məhsul məlumatlarının göstərilməsi üçün bütün kodu köçürək:

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-də qalan sətri silək. O, artıq bizə lazım deyil:

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

İndi isə ProductsList funksiyasının kodunun əvvəlində daha bir neçə dəyişən təyin edək, errorcontent. Birincisi səhv üçün olacaq, ikincisinə isə sorğunun statusundan asılı olaraq müəyyən məzmun yazacağıq. Bunu const dataFetch = useRef(false)-dən əvvəl edək:

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

İndi komponentin return əmrindən əvvəl ProductsList şərtlərlə bir kod bloku yazaq, hansı ki, content-ə statusdan asılı olaraq müxtəlif məzmun daxil olunacaq. Əvvəlcə 'in progress' statusunu təsvir edəcəyik - sorğumuz göndərildikdə. Bu halda biz istifadəçiyə məlumatların yüklənməkdə olduğunu bildirəcəyik:

if (productStatus === 'in progress') { content = <p>Məhsul siyahısı yüklənir ...</p> }

Əgər yükləməmiz uğurla baş veribsə (biz bunu 'success' kimi qeyd etmişdik), onda bizə alınan məhsulların siyahısını göstərmək lazımdır. Onu map ilə ProductCard komponenti vasitəsilə göstərək, ona props kimi product ötürək:

if (productStatus === 'in progress') { content = <p>Məhsul siyahısı yüklənir ...</p> } else if (productStatus === 'success') { content = products.map((product) => ( <ProductCard key={product.id} product={product} /> )) }

Və bizim olan son status - bu 'fail'-dır. Onu da əlavə edək. Burada error dəyişənindən istifadə edək, hansı ki, yuxarıda state-dən aldığımız səhvi ona yazmışdıq:

if (productStatus === 'in progress') { content = <p>Məhsul siyahısı yüklənir ...</p> } else if (productStatus === 'success') { content = products.map((product) => ( <ProductCard key={product.id} product={product} /> )) } else if (productStatus === 'fail') { content = <div>{error}</div> }

Və son addım olaraq biz return üçün olan kod blokunda köhnə {dispProducts}-i {content} ilə əvəz edəcəyik.

Gəlin tətbiqimizi işə salaq, menyuda 'Products'-ə klik edək. Hər şey işləyir. Görürük ki, təxminən 2 saniyə (biz serverdə təyin etdiyimiz kimi) məhsul əlavə etmə formasının altında 'Məhsul siyahısı yüklənir ...' yazısı görünür, sonra isə məhsulların siyahısı peyda olur.

Tələbələrlə olan tətbiqinizi açın. Onda StudentsList.jsx faylını açın. Onda yeni bir komponent yaradın StudentCard. Dərsdə göstərildiyi kimi, dispStudents-dən olan kodu ona köçürün.

StudentsList funksiyasında errorcontent dəyişənlərini yaradın. content dəyişəninə sorğunun statusundan asılı olaraq məzmun təyin edin. Qaytarılan verilişdə köhnə dispStudents-i content ilə əvəz etməyi unutmayın.

Azərbaycan
AfrikaansБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Biz saytin işi, analitika və fərdiləşdirmə üçün cookie istifadə edirik. Məlumatların emalı Məxfilik Siyasəti əsasında həyata keçirilir.
hamısını qəbul et konfiqurasiya et rədd et