⊗jsrtPmRtAL 42 of 47 menu

Označevanje aktivne povezave v React Router

Predpostavimo, da smo dodali več produktov v našo aplikacijo in pregledujemo vsakega od produktov. Kako lahko razumemo, na strani katerega produkta se trenutno nahajamo? Označimo ta produkt na seznamu, na primer s krepko pisavo in rjavo barvo, če pa se povezava še nalaga, pa s sivo.

Za začetek pojdite na domačo stran, dodajte na seznam 4 produkte in za vsakega od njih vnesite podatke. Dajte jim poljubna imena.

Pri označevanju aktivne povezave nam bo pomagal komponent NavLink, to je podvrsta komponenta Link, ki pozna stanje podatkov. Običajno se uporablja pri ustvarjanju navigacijskega menija.

Odprimo root.jsx in uvozimo NavLink (ne pozabite odstraniti uvoza Link, sicer se lahko React jezi, saj ga ne uporabljamo več):

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

Nato v postavitvi zamenjajmo komponent Link z NavLink:

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

In dodajmo mu prop className, ter uporabimo pogojno logiko. Če se stran naložila, bo povezava prešla v stanje aktivna, če se nalaga, pa v stanje nalaganja, če pa se nič ne dogaja, bo ostala enaka. Odvisno od tega se bo spreminjal razred povezave:

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

Ostalo nam je le še dodati sloge za active in loading razrede v naš css-datoteko:

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

Končano! Zdaj pa klikajte na produkte na seznamu.

Vzemite aplikacijo, ki ste jo ustvarili v nalogah za prejšnje lekcije. Z uporabo gradiva iz lekcije implementirajte v njej označevanje aktivne povezave za seznam študentov tako, da bo jasno, podatke katerega študenta uporabnik trenutno pregleduje.

Slovenščina
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Za delovanje spletnega mesta, analitiko in personalizacijo uporabljamo piškotke. Obdelava podatkov poteka v skladu s Politiko zasebnosti.
sprejmi vse nastavi zavrni