⊗jsrtPmRtNS 43 of 47 menu

Navigeringstillstånd i React Router

Om vi klickar på produkter i listan, ser vi att sidan med produkten första gången laddas med fördröjning, och de andra gångerna snabbare, samma sak vid tillägg och uppdatering av produkt, eftersom vi har cache på klientsidan.

I den här lektionen kommer vi att visa användaren i vilket tillstånd vår sida befinner sig. Här kan hooken useNavigation hjälpa oss. Resultatet av sitt arbete returnerar denna hook ett objekt med en rad egenskaper. Vi kommer att vara intresserade av en av dem - egenskapen state.

Egenskapen state kan ha 3 värden: 'idle' (inget händer), 'submitting' (när ett formulär skickas via POST, PUT, PATCH eller DELETE och action för routen anropas), 'loading' (när loader för nästa route anropas för att rendera nästa sida). Vi kommer att vara intresserade av det sista värdet.

Låt oss gå in i filen root.jsx och importera denna hook:

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

Sedan, för resultatet som returneras av hooken, skapar vi en variabel navigation i funktionen Root - före return:

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

Och låt oss nu använda dess egenskap state, om det är värdet 'loading', så sätter vi klassen loading för div:en där vår produktdata renderas:

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

Allt som återstår för oss är att lägga till stilar för klassen loading i index.css. Låt oss i laddningstillstånd helt enkelt öka opacity:

div.loading { opacity: 0.3; }

Nu, om vi, efter att ha laddat om webbplatsen, klickar på produkter i listan eller, till exempel, lägger till en ny produkt, kommer vi att se att den aktuella sidan för ett ögonblick bleknar innan nästa sida visas.

Ta applikationen du skapade i uppgifterna till tidigare lektioner. Använd lektionens material och med hjälp av hooken useNavigation, se till att användaren kan se att nästa sida med studentdata laddas.

Svenska
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi använder kakor för webbplatsens funktion, analys och personalisering. Behandling av data sker i enlighet med Integritetspolicyn.
acceptera alla anpassa avvisa