⊗jsrtPmRtNS 43 of 47 menu

Navigatiestatus in React Router

Als we op producten in de lijst klikken, zien we dat de pagina met het product de eerste keer met vertraging wordt geladen, en de andere keren al snel, hetzelfde bij het toevoegen en bijwerken van een product, omdat we een cache aan de clientzijde hebben.

In deze les laten we de gebruiker zien in welke staat onze pagina verkeert. Hierbij kan de hook useNavigation ons helpen. Als resultaat van zijn werk geeft deze hook een object met een aantal eigenschappen terug. We zijn geïnteresseerd in één ervan - de eigenschap state.

De eigenschap state kan 3 waarden hebben: 'idle' (er gebeurt niets), 'submitting' (bij het verzenden van een formulier via POST, PUT, PATCH of DELETE werd de action van de route aangeroepen), 'loading' (wanneer de loader voor de volgende route is aangeroepen om de volgende pagina te renderen). We zijn geïnteresseerd in de laatste waarde.

Laten we naar het bestand root.jsx gaan en deze hook importeren:

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

Vervolgens maken we voor het door de hook teruggegeven resultaat een variabele navigation aan in de functie Root - vóór return:

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

En laten we nu gebruikmaken van de eigenschap state, als dit de waarde 'loading' is, dan stellen we de klasse loading in voor de div waarin onze productgegevens worden gerenderd:

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

We hoeven alleen nog stijlen toe te voegen voor de klasse loading in index.css. Laten we in geval van een laadstatus gewoon de opacity verhogen:

div.loading { opacity: 0.3; }

Nu, als we de site herladen en op producten in de lijst klikken of, bijvoorbeeld, een nieuw product toevoegen, zien we dat de huidige pagina even vervaagt voordat de volgende verschijnt.

Neem de applicatie die je hebt gemaakt in de opdrachten bij eerdere lessen. Gebruikmakend van de lesmaterialen, zorg met behulp van de hook useNavigation dat de gebruiker kan zien dat de volgende pagina met studentgegevens wordt geladen.

Nederlands
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wij gebruiken cookies voor de werking van de site, analyse en personalisatie. De verwerking van gegevens gebeurt volgens het Privacybeleid.
alles accepteren aanpassen weigeren