⊗jsrtPmRtAL 42 of 47 menu

Cómo resaltar un enlace activo en React Router

Supongamos que hemos añadido varios productos a nuestra aplicación y estamos viendo cada uno de los productos. ¿Cómo podemos saber en la página de qué producto nos encontramos actualmente? Vamos a resaltar este producto en la lista, por ejemplo en negrita y color marrón, y si el enlace aún se está cargando, en gris.

Para empezar, vaya a la página principal, añada 4 productos a la lista y para cada uno de ellos ingrese los datos. Asigne cualquier nombre.

Para resaltar el enlace activo nos ayudará el componente NavLink, que es una variante del componente Link, que conoce el estado de los datos. Normalmente se usa al crear un menú de navegación.

Abramos root.jsx e importemos NavLink (no olvide eliminar la importación de Link, o React podría quejarse, ya que ya no lo usamos):

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

Luego, en el diseño, reemplacemos el componente Link por NavLink:

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

Y añadamos la prop className, así como usemos lógica condicional. Si la página se cargó, el enlace pasará a estado activo, si se está cargando, a estado de carga, si no pasa nada, permanecerá igual. Dependiendo de esto, cambiará la clase del enlace:

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

Solo nos queda añadir estilos para las clases active y loading a nuestro archivo css:

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

¡Listo! Y ahora haga clic en los productos de la lista.

Tome la aplicación creada por usted en las tareas de lecciones anteriores. Usando los materiales de la lección, implemente en ella el resaltado del enlace activo para la lista de estudiantes, de modo que quede claro los datos de qué estudiante el usuario está viendo actualmente.

Español
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Usamos cookies para el funcionamiento del sitio, análisis y personalización. El procesamiento de datos se realiza de acuerdo con la Política de privacidad.
aceptar todas configurar rechazar