⊗jsrtPmRtAL 42 of 47 menu

Вылучэнне актыўнай спасылкі ў React Router

Выкажам здагадку, мы дадалі некалькі прадуктаў у наша прыкладанне і праглядаем кожны з прадуктаў. Як жа нам зразумець на старонцы якога прадукту мы зараз знаходзімся? Давайце будзем вылучаць гэты прадукт у спісе, напрыклад тлустым шрыфтам і карычневым колерам, а калі спасылка яшчэ падгружаецца, то шэрым.

Для пачатку зайдзіце на галоўную старонку, дадайце ў спіс 4 прадукту і для кожнага з іх унясіце дадзеныя. Дайце ім любыя назвы.

У вылучэнні актыўнай спасылкі нам дапаможа кампанент NavLink, гэта падвід кампанента Link, які ведае аб стане дадзеных. Звычайна ён ужываецца пры стварэнні навігацыйнага меню.

Давайце адкрыем root.jsx і імпартуем NavLink (не забудзьце прыбраць імпарт Link, а то React можа лаяцца, бо мы яго больш не выкарыстоўваем):

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

Затым у макеце заменім кампанент Link на NavLink:

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

І дадамо яму пропс className, а таксама выкарыстаем умоўную логіку. Калі старонка загрузілася, то спасылка перайдзе ў стан актыўнай, калі загружаецца, то ў стан загрузкі, калі ж нічога не адбываецца, то застанецца ранейшай. У залежнасці ад гэтага будзе мяняцца клас спасылкі:

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

Нам засталося дадаць стыляў для active і loading класаў у наш css-файл:

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

Гатова! А цяпер паклікайце на прадукты ў спісе.

Вазьміце прыкладанне, створанае вамі ў заданнях да мінулых урокаў. Карыстаючыся матэрыяламі ўрока, рэалізуйце ў ім вылучэнне актыўнай спасылкі для спісу студэнтаў так, каб было зразумела дадзеныя якога студэнта юзер зараз праглядае.

Беларуская
AfrikaansAzərbaycanБългарскиবাংলাČeštinaDanskDeutschΕλληνικά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
Мы выкарыстоўваем cookie для працы сайта, аналітыкі і персаналізацыі. Апрацоўка дадзеных адбываецца згодна Палітыкай канфідэнцыяльнасці.
прыняць усе наладзіць адхіліць