⊗jsrtPmRtNS 43 of 47 menu

React Routerда навигация ҳолати

Агар биз рўйхатдан маҳсулотларни боссак, биринчи бор маҳсулот саҳифаси кечиктириш билан юкланганини кўрамиз, қолганларида энди тез, шунингдек маҳсулот қўшганда ва янголаганда ҳам, чунки бизда мижоз томонида кеш мавжуд.

Ушбу дарсда биз фойдаланувчига бизнинг саҳифамизнинг ҳолати қандай эканини кўрсатамиз. Буда бизга useNavigation ҳук ёрдам белади. Уз ишининг натижаси сифатида бу ҳук бир нечта хусусиятларга эга бўлган объектни қайтаради. Бизни унгинг битта хусусияти - state хусусияти қизиктиради.

state хусусияти 3 қийматга эга бўлиши мумкин: 'idle' (ҳеч нарса бўлмаяпти), 'submitting' (шакл POST, PUT, PATCH ёки DELETE орқали юборилганда ва action йўналиши чақирилганда), 'loading' (кейинги йўналиш учун юклагич чақирилганда, кейинги саҳифани рендер қилиш учун). Бизни оксирги қиймат қизиктиради.

Келинг root.jsx файлига кириб, ушбу ҳукни импорт қиламиз:

import { useNavigation } from 'react-router-dom';

Сўнгра, ҳук қайтарган натижа учун, Root функциясида navigation ўзгарувчисини эълон қиламиз - return дан олдин:

const { products } = useLoaderData(); const navigation = useNavigation();

Энди унинг state хусуятидан фойдаланамиз, агар у 'loading' қийматга тенг бўлса, у ҳолда биз маҳсулот маълумотлари рендер қилинаётган див учун loading синфини ўрнатамиз:

<div id="product" className={navigation.state === 'loading' ? 'loading' : ''}> <Outlet /> </div>

Бизга loading синфи учун index.css да стиллар қўшиш қолди. Келинг юклаш ҳолатида жудо opacity ни оширамиз:

div.loading { opacity: 0.3; }

Энди, агар сайти қайта юклаб, рўйхатдан маҳсулотларни боссак ёки, масалан, янги маҳсулот қўшсак, биз кейинги саҳифа пайдо бўлишидан олдин жарий саҳифа бир оз ўчук-ўчук бўлишини кўрамиз.

Утган дарслардаги вазифаларда яратган иловангизни олинг. Дарс материалларидан фойдаланиб, useNavigation ҳуки ёрдамида фойдаланувчи кейинги талаба маълумотлари саҳифаси юкланмоқда эканини кўра олсин.

Ўзбек
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeOʻzbekTiếng Việt
Биз веб-сайт ишлаши, таҳлил қилиш ва персоналлаштириш учун кукидан фойдаланамиз. Маълумотларни қайта ишлаш Махфийлик сиёсатига мувофиқ амалга оширилади.
ҳаммасини қабул қилиш мослаштириш рад этиш