⊗jsrtPmRtNS 43 of 47 menu

Navigoinnin tila React Routerissa

Jos klikkaamme tuotteita listassa, huomaamme, että tuotesivu latautuu ensimmäisellä kerralla viiveellä, mutta muilla kerroilla jo nopeasti, sama asia tuotetta lisättäessä ja päivitettäessä, koska meillä on välimuisti asiakaspuolella.

Tässä oppitunnissa näytämme käyttäjälle minkä tilassa sivu on. Tässä voi auttaa hookki useNavigation. Tämä hookki palauttaa objektin, jossa on useita ominaisuuksia. Meitä kiinnostaa yksi niistä - ominaisuus state.

Ominaisuudella state voi olla 3 arvoa: 'idle' (ei tapahdu mitään), 'submitting' (kun lomake lähetetään POST-, PUT-, PATCH- tai DELETE-metodilla ja reitin action on kutsuttu), 'loading' (kun seuraavan reitin lataajaa on kutsuttu seuraavan sivun renderöimiseksi). Meitä kiinnostaa viimeinen arvo.

Käydään tiedostossa root.jsx ja tuodaan tämä hookki:

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

Sen jälkeen, hookin palauttamalle tulokselle, luomme muuttujan navigation funktiossa Root - ennen return:ä:

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

Ja nyt hyödynnämme sen ominaisuutta state, jos se on arvo 'loading', asetamme luokan loading sille diville, jossa tuotetiedot renderöidään:

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

Meidän on vielä lisättävä tyylejä luokalle loading tiedostoon index.css. Lataustilan sattuessa lisätään vain opacity:ia:

div.loading { opacity: 0.3; }

Nyt, jos sivusto ladataan uudelleen ja klikkailemme tuotteita listassa tai esimerkiksi lisäämme uuden tuotteen, huomaamme, että nykyinen sivu hetkellisesti haalenee, ennen kuin seuraava ilmestyy.

Ota sovellus, jonka loit aiempien oppituntien tehtäviin. Hyödyntäen oppitunnin materiaalia, hookin useNavigation avulla tee niin, että käyttäjä pystyy näkemään, että seuraava sivu opiskelijatiedoilla ladataan.

Suomi
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Käytämme evästeitä verkkosivuston toiminnalle, analytiikalle ja personoinnille. Tietojen käsittely tapahtuu Tietosuojakäytännön mukaisesti.
hyväksy kaikki mukauta hylkää