⊗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çeЎзбекOʻzbekTiếng Việt
Біз сайттың жұмысы, аналитика және персонализация үшін cookie файлдарын қолданамыз. Деректерді өңдеу Құпиялылық саясаты бойынша жүреді.
барлығын қабылдау баптау қабылдамау