⊗jsrtPmRtAL 42 of 47 menu

Evidențierea linkului activ în React Router

Să presupunem că am adăugat mai multe produse în aplicația noastră și vizualizăm fiecare dintre produse. Cum putem înțelege pe pagina carei produs ne aflăm în prezent? Să evidențiem acest produs în listă, de exemplu cu font îngroșat și culoare maro, iar dacă linkul se încarcă, atunci cu gri.

Pentru început, accesați pagina principală, adăugați în listă 4 produse și pentru fiecare dintre ele introduceți date. Dați-le orice nume.

La evidențierea linkului activ ne va ajuta componenta NavLink, aceasta este un subtip al componentei Link, care cunoaște starea datelor. De obicei, este utilizat la crearea unui meniu de navigare.

Să deschidem root.jsx și să importăm NavLink (nu uitați să eliminați importul Link, altfel React se poate plânge, deoarece nu-l mai folosim):

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

Apoi, în layout, înlocuim componenta Link cu NavLink:

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

Și adăugați-i prop-ul className, și de asemenea utilizați logica condițională. Dacă pagina s-a încărcat, atunci linkul va trece în starea activă, dacă se încarcă, atunci în starea de încărcare, iar dacă nimic nu se întâmplă, va rămâne neschimbat. În funcție de aceasta, se va schimba clasa linkului:

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

Ne rămâne să adăugăm stiluri pentru clasele active și loading în fișierul nostru css:

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

Gata! Și acum faceți clic pe produse din listă.

Luați aplicația creată de dvs. în sarcinile din lecțiile anterioare. Folosind materialele lecției, implementați în ea evidențierea linkului activ pentru lista de studenți, astfel încât să fie clar datele cărui student le vizualizează utilizatorul în prezent.

Română
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Folosim cookie pentru funcționarea site-ului, analiză și personalizare. Prelucrarea datelor are loc în conformitate cu Politica de confidențialitate.
acceptă toate configurează respinge