⊗jsrtPmRtAL 42 of 47 menu

Fremhævelse af aktivt link i React Router

Antag, at vi har tilføjet flere produkter til vores applikation og ser på hvert af produkterne. Hvordan kan vi forstå på hvilken produktside vi befinder os i øjeblikket? Lad os fremhæve dette produkt på listen, for eksempel med fed skrift og brun farve, og hvis linket stadig indlæses, så med grå farve.

Til at starte med, gå til forsiden, tilføj 4 produkter til listen og indtast data for hver af dem. Giv dem vilkårlige navne.

Ved fremhævning af aktive links vil komponenten NavLink hjælpe os, det er en underart af komponenten Link, som kender til dataens tilstand. Den bruges normalt ved oprettelse af en navigationsmenu.

Lad os åbne root.jsx og importere NavLink (husk at fjerne importen af Link, ellers kan React brokke sig, da vi ikke længere bruger den):

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

Derefter erstatter vi komponenten Link med NavLink i layoutet:

<NavLink key={product.id} to={`products/${product.id}`}> {product.name ? product.name : <i>unnamed</i>} </NavLink>

Og tilføj prop'en className til den, samt brug betinget logik. Hvis siden er indlæst, vil linket gå over i aktiv tilstand, hvis den indlæses, så i indlæsningstilstand, og hvis intet sker, forbliver den uændret. Afhængigt heraf vil linkets klasse ændre sig:

<NavLink key={product.id} to={`products/${product.id}`} className={({ isActive, isPending }) => isActive ? 'active' : isPending ? 'loading' : '' } > {product.name ? product.name : <i>Unnamed</i>} </NavLink>

Tilbage står det at tilføje styling for active og loading klasserne til vores css-fil:

a.active { font-weight: bold; color: brown; } a.loading { color: gray; }

Klar! Prøv nu at klikke på produkterne på listen.

Tag applikationen, som du oprettede i opgaverne til de foregående lektioner. Brug materialet fra lektionen til at implementere fremhævning af aktive links for listen over studerende, så det er tydeligt hvilken studerendes data brugeren i øjeblikket ser på.

Dansk
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDeutschΕλληνικά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
Vi bruger cookies til webstedets funktion, analyse og personalisering. Behandling af data foregår i henhold til Fortrolighedspolitikken.
accepter alle tilpas afvis