⊗jsrtPmRtAL 42 of 47 menu

Evidenziare il Link Attivo in React Router

Supponiamo di aver aggiunto diversi prodotti alla nostra applicazione e di visualizzare ciascuno dei prodotti. Come facciamo a capire su quale pagina di prodotto ci troviamo attualmente? Iniziamo a evidenziare questo prodotto nell'elenco, ad esempio in grassetto e con il colore marrone, mentre se il link è ancora in caricamento, in grigio.

Per iniziare, vai alla pagina principale, aggiungi 4 prodotti all'elenco e per ognuno di essi inserisci i dati. Assegna loro nomi qualsiasi.

Ad aiutarci nell'evidenziare il link attivo ci sarà il componente NavLink, una variante del componente Link, che è a conoscenza dello stato dei dati. Di solito viene utilizzato quando si crea un menu di navigazione.

Apriamo root.jsx e importiamo NavLink (ricordati di rimuovere l'import di Link, altrimenti React potrebbe lamentarsi, dato che non lo usiamo più):

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

Poi, nel layout, sostituiamo il componente Link con NavLink:

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

E aggiungiamo la prop className, utilizzando anche una logica condizionale. Se la pagina è stata caricata, il link passerà a uno stato attivo; se è in caricamento, a uno stato di caricamento; se invece non sta accadendo nulla, rimarrà invariato. In base a ciò, cambierà la classe del link:

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

Non ci resta che aggiungere gli stili per le classi active e loading nel nostro file css:

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

Fatto! Ora clicca sui prodotti nell'elenco.

Prendi l'applicazione che hai creato nei compiti delle lezioni precedenti. Utilizzando il materiale della lezione, implementa l'evidenziazione del link attivo per l'elenco degli studenti, in modo che sia chiaro quale studente l'utente sta attualmente visualizzando.

Italiano
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesia日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Utilizziamo i cookie per il funzionamento del sito, l'analisi e la personalizzazione. I dati vengono elaborati in conformità con la Politica sulla privacy.
accetta tutto personalizza rifiuta