⊗jsrtPmRtAL 42 of 47 menu

Zvýraznenie aktívneho odkazu v React Router

Predpokladajme, že sme pridali niekoľko produktov do našej aplikácie a prezeráme si každý z produktov. Ako môžeme zistiť, na stránke ktorého produktu sa práve nachádzame? Poďme zvýrazniť tento produkt v zozname, napríklad tučným písmom a hnedou farbou, a ak sa odkaz ešte načítava, tak sivou.

Na začiatok prejdite na domovskú stránku, pridajte do zoznamu 4 produkty a pre každý z nich zadajte údaje. Dajte im ľubovoľné názvy.

Pri zvýrazňovaní aktívneho odkazu nám pomôže komponent NavLink, čo je podtyp komponentu Link, ktorý pozná stav údajov. Zvyčajne sa používa pri vytváraní navigačného menu.

Poďme otvoriť root.jsx a importovať NavLink (nezabudnite odstrániť import Link, lebo React by mohol protestovať, veď ho už viac nepoužívame):

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

Potom v makete nahradíme komponent Link za NavLink:

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

A pridáme mu prop className, a tiež použijeme podmienenú logiku. Ak sa stránka načítala, odkaz prejde do aktívneho stavu, ak sa načítava, tak do stavu načítavania, ak sa nič nedeje, zostane nezmenený. V závislosti od toho sa bude meniť trieda odkazu:

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

Zostáva nám pridať štýly pre active a loading triedy do nášho css súboru:

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

Hotovo! A teraz klikajte na produkty v zozname.

Vezmite aplikáciu, ktorú ste vytvorili v úlohách k predchádzajúcim lekciám. Použitím materiálov z lekcie implementujte v nej zvýraznenie aktívneho odkazu pre zoznam študentov tak, aby bolo jasné, údaje ktorého študenta používateľ práve prezerá.

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
Používame cookies na fungovanie stránky, analýzu a personalizáciu. Spracúvanie údajov prebieha v súlade s Politikou ochrany osobných údajov.
prijať všetky nastaviť odmietnuť