⊗jsrtPmRtAL 42 of 47 menu

Az aktív link kiemelése a React Routerben

Tegyük fel, hogy hozzáadtunk néhány terméket alkalmazásunkhoz, és mindegyik terméket megnézzük. Hogyan érthetjük meg, hogy éppen melyik termék oldalán vagyunk? Emeljük ki ezt a terméket a listában, például vastag betűtípussal és barna színnel, ha pedig a link még betöltődik, akkor szürke színnel.

Kezdetben menjen a főoldalra, adjon hozzá 4 terméket a listához, és mindegyikhez adja meg az adatokat. Adjon nekik tetszőleges neveket.

Az aktív link kiemelésében a NavLink komponens segít nekünk, ez a Link komponens egyik fajtája, amely ismeri az adatok állapotát. Általában navigációs menü létrehozásakor használják.

Nyissuk meg a root.jsx fájlt és importáljuk a NavLink komponenst (ne felejtsük el eltávolítani a Link importját, mert a React megsértődhet, hiszen már nem használjuk):

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

Ezután a layoutban cseréljük le a Link komponenst NavLink-re:

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

És adjunk hozzá egy className prop-ot, valamint használjunk feltételes logikát. Ha az oldal betöltődött, akkor a link aktív állapotba kerül, ha éppen betöltődik, akkor betöltési állapotba, ha pedig semmi sem történik, akkor változatlan marad. Ennek függvényében változik a link osztálya:

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

Már csak a stílusok hozzáadása van hátra az active és loading osztályokhoz a css-fájlunkban:

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

Kész! Most kattintgasson a termékeken a listában.

Vegye azt az alkalmazást, amit az előző leckék feladataihoz készített. A lecke anyagait felhasználva valósítsa meg benne az aktív link kiemelését a diákok listájához úgy, hogy egyértelmű legyen a felhasználó számára, melyik diák adatait nézi éppen.

Magyar
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
A weboldal működéséhez, elemzéshez és személyre szabáshoz sütiket használunk. Az adatfeldolgozás a Adatvédelmi irányelvek szerint történik.
összes elfogadása beállítás elutasítás