⊗jsrtPmRtAL 42 of 47 menu

Zvýraznění aktivního odkazu v React Router

Předpokládejme, že jsme přidali několik produktů do naší aplikace a prohlížíme si každý z produktů. Jak poznáme, na stránce kterého produktu se právě nacházíme? Pojďme zvýraznit tento produkt v seznamu, například tučným písmem a hnědou barvou, a pokud se odkaz ještě načítá, tak šedou.

Pro začátek přejděte na hlavní stránku, přidejte do seznamu 4 produkty a pro každý z nich vyplňte data. Dejte jim libovolné názvy.

Při zvýrazňování aktivního odkazu nám pomůže komponenta NavLink, což je poddruh komponenty Link, který zná stav dat. Obvykle se používá při vytváření navigačního menu.

Pojďme otevřít root.jsx a importovat NavLink (nezapomeňte odstranit import Link, protože React by se mohl zlobit, jelikož ho již nepoužíváme):

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

Poté v šabloně nahradíme komponentu Link za NavLink:

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

A přidáme mu prop className, a také použijeme podmíněnou logiku. Pokud se stránka načetla, odkaz přejde do aktivního stavu, pokud se načítá, tak do stavu načítání, pokud se nic neděje, zůstane beze změny. V závislosti na tom se bude měnit třída odkazu:

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

Zbývá nám přidat styly pro active a loading třídy do našeho css souboru:

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

Hotovo! A teď klikněte na produkty v seznamu.

Vezměte aplikaci, kterou jste vytvořili v úkolech k předchozím lekcím. S využitím materiálů lekce v ní implementujte zvýraznění aktivního odkazu pro seznam studentů tak, aby bylo jasné, data kterého studenta uživatel právě prohlíží.

Čeština
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяDanskDeutschΕλληνικά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
Používáme soubory cookie pro fungování webu, analýzu a personalizaci. Zpracování údajů probíhá v souladu s Zásadami ochrany osobních údajů.
přijmout vše přizpůsobit odmítnout