⊗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çaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어LietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Биз сайттин иштөөсү, аналитика жана персонализация үчүн cookie файлдарын колдонобуз. Маалыматтарды иштетүү Маалыматты коргоо саясаты боюнча жүргүзүлөт.
баарын кабыл алуу ыңгайлаштыруу четке кагуу