⊗jsrtPmRtNS 43 of 47 menu

Stanje navigacije v React Router

Če kliknemo na izdelke na seznamu, vidimo, da se stran z izdelkom prvič naloži z zamudo, nato pa že hitro, enako velja pri dodajanju in posodabljanju izdelka, saj imamo predpomnilnik na strani odjemalca.

V tej lekciji bomo uporabniku prikazali v kakšnem stanju je naša stran. Pri tem nam lahko pomaga kljuka useNavigation. Rezultat njenega dela je objekt z vrsto lastnosti. Zanimala nas bo ena od njih - lastnost state.

Lastnost state ima lahko 3 vrednosti: 'idle' (nič se ne dogaja), 'submitting' (ko ob pošiljanju obrazca prek POST, PUT, PATCH ali DELETE pokličemo action poti), 'loading' (ko je poklican nalagalnik za naslednjo pot, da izriše naslednjo stran). Zanimala nas bo zadnja vrednost.

Pojdimo v datoteko root.jsx in uvozimo to kljuko:

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

Nato za vrnjeni rezultat kljuke ustvarimo spremenljivko navigation v funkciji Root - pred return:

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

Zdaj pa uporabimo njeno lastnost state, če je to vrednost 'loading', bomo nastavili razred loading za div, v katerem se prikazujejo podatki izdelka:

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

Ostane nam še dodati sloge za razred loading v index.css. Naj v primeru stanja nalaganja preprosto povečamo opacity:

div.loading { opacity: 0.3; }

Zdaj, če po ponovnem nalaganju strani kliknemo na izdelke na seznamu ali na primer dodamo nov izdelek, bomo videli, da bo trenutna stran za nekaj trenutkov zbledela, preden se prikaže naslednja.

Vzemite aplikacijo, ki ste jo ustvarili v nalogah za prejšnje lekcije. Z uporabo gradiva iz lekcije, s pomočjo kljuke useNavigation naredite tako, da lahko uporabnik vidi, da se naslednja stran s podatki študenta nalaga.

Slovenščina
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Za delovanje spletnega mesta, analitiko in personalizacijo uporabljamo piškotke. Obdelava podatkov poteka v skladu s Politiko zasebnosti.
sprejmi vse nastavi zavrni