cover

Cómo activar el link correspondiente según la ruta anidada que coincida en Remix

author photo

Héctor Bliss

@hectorbliss

Si vienes del desarrollo web desde hace muchos años, seguro recuerdas que antes teníamos total control de nuestro backend, era muy común usar PHP, Python, Ruby on Rails y hasta Java para el backend, y desde ahí podíamos saber exactamente en qué URL se encontraba el usuario.

Pero cuando pasamos a los SPA's y la nueva era del desarrollo Frontend, perdimos este poder (al menos nativamente), pero lo hemos recuperado, y claro, no sería de la mejor manera si no tuviéramos un hook para ello.

El hook useLocation

React Router cuenta con uno de los hooks más infravalorados de la librería, el hook useLocation.

Cuando lo desestructuramos podemos obtener el pathname actual del documento, lo que nos permite acceder a la URL del usuario en cualquier momento, algo muy útil para saber en qué URL nos encontramos y así poder activar el link correspondiente.


🎬 ¿Te está gustando este contenido? Tenemos más tutoriales sobre React Router y Remix en nuestro canal de YouTube.


Rutas anidadas

Para que esto funcione correctamente, necesitas tener una estructura de rutas anidadas. Por ejemplo:

En Remix (y React Router v6+), el componente <Outlet /> renderiza la ruta hija que coincida con la URL actual, mientras que el layout padre permanece visible.

Función auxiliar para clases

Si tienes muchos links, puedes crear una función auxiliar:

Alternativa: NavLink

React Router también ofrece el componente <NavLink> que hace esto automáticamente:

La diferencia es que NavLink solo marca como activo cuando la ruta coincide exactamente (o sus hijas directas), mientras que con useLocation tienes control total sobre la lógica de coincidencia.

¿Cuándo usar cada uno?

CasoSolución
Links simples de navegaciónNavLink
Lógica personalizada de activaciónuseLocation
Activar padre cuando hijo está activouseLocation con includes()
Múltiples rutas activan mismo linkuseLocation con lógica custom

Con useLocation recuperas el poder que teníamos en el backend tradicional: saber exactamente dónde está el usuario y actuar en consecuencia.

Abrazo. bliss.

meta cover

jQuery 4: Lo que necesitas saber

Checa este otro Post

meta cover

Adiós ESLint y Prettier: Por qué migramos a Biome

Checa este otro Post

¡Nuevo curso!

Animaciones web con React + Motion 🧙🏻