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

Héctor Bliss
@hectorblissSi 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?
| Caso | Solución |
|---|---|
| Links simples de navegación | NavLink |
| Lógica personalizada de activación | useLocation |
| Activar padre cuando hijo está activo | useLocation con includes() |
| Múltiples rutas activan mismo link | useLocation 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.
