⊗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
Ние използваме бисквитки за работата на сайта, анализ и персонализация. Обработката на данни се извършва в съответствие с Политика за поверителност.
приемам всички настройки отхвърляне