Rutas dinámicas y layouts anidados en React Router

Construye navegación avanzada con parámetros de URL, rutas anidadas y layouts reutilizables para escalar aplicaciones React.

Cuando una app crece, las rutas estáticas no bastan: necesitas representar recursos dinámicos como usuarios, pedidos o artículos por id.

React Router permite definir segmentos dinámicos (`:id`) para mapear URLs a datos específicos.

Además, los layouts anidados con `Outlet` ayudan a reutilizar cabeceras, sidebars y estructura común entre secciones.

Este enfoque reduce duplicación y deja una arquitectura de navegación más limpia y mantenible.

  • Usa `:param` en la ruta y recupéralo con `useParams` dentro del componente destino.
  • Un patrón típico: `/users/:userId` para representar detalle de usuario.
  • `useParams` devuelve valores como strings, por lo que conviene normalizar si necesitas número.
  • Mantén nombres de params semánticos para mejorar legibilidad y debugging.
  • Define estructura compartida una sola vez y renderiza hijos en `Outlet`.

Rutas dinámicas con parámetros

Usa `:param` en la ruta y recupéralo con `useParams` dentro del componente destino.

Un patrón típico: `/users/:userId` para representar detalle de usuario.

`useParams` devuelve valores como strings, por lo que conviene normalizar si necesitas número.

Mantén nombres de params semánticos para mejorar legibilidad y debugging.

Layouts anidados con Outlet

Define estructura compartida una sola vez y renderiza hijos en `Outlet`.

Arquitectura de rutas escalable

Organiza rutas por dominios funcionales, no por orden aleatorio de creación.

Agrupa rutas de una sección bajo un layout común (`/dashboard/*`, `/account/*`, etc.).

Evita árboles muy profundos sin motivo: la anidación debe responder a estructura real de UI.

Documenta rutas críticas para facilitar onboarding del equipo.

  • Rutas dinámicas para recursos.
  • Layouts compartidos por sección.
  • Menos duplicación de estructura.
  • Mejor mantenibilidad global.
React
16

Rutas dinámicas y layouts anidados en React Router

Construye navegación avanzada con parámetros de URL, rutas anidadas y layouts reutilizables para escalar aplicaciones React.

Código del tema: <Route path="/dashboard" element={<Dashboard />} />

📘 Teoría

Rutas dinámicas con parámetros

Usa `:param` en la ruta y recupéralo con `useParams` dentro del componente destino.

1

Un patrón típico: `/users/:userId` para representar detalle de usuario.

2

`useParams` devuelve valores como strings, por lo que conviene normalizar si necesitas número.

3

Mantén nombres de params semánticos para mejorar legibilidad y debugging.

Layouts anidados con Outlet

Define estructura compartida una sola vez y renderiza hijos en `Outlet`.

Layout de dashboard
import { Outlet } from 'react-router-dom';

function DashboardLayout() {
  return (
    <div>
      <header>Panel Admin</header>
      <aside>Menú lateral</aside>
      <main>
        <Outlet />
      </main>
    </div>
  );
}

Arquitectura de rutas escalable

Organiza rutas por dominios funcionales, no por orden aleatorio de creación.

Agrupa rutas de una sección bajo un layout común (`/dashboard/*`, `/account/*`, etc.).

Evita árboles muy profundos sin motivo: la anidación debe responder a estructura real de UI.

Documenta rutas críticas para facilitar onboarding del equipo.

  • Rutas dinámicas para recursos.
  • Layouts compartidos por sección.
  • Menos duplicación de estructura.
  • Mejor mantenibilidad global.

🧪 Aprende probando

Ejemplo Ejemplo: árbol con layout + detalle dinámico Configuración de rutas anidadas para dashboard y detalle de usuario.

🏁 Retos

Reto Reto: añade ruta dinámica de productos Incluye un hijo dinámico `products/:productId` dentro del layout principal.

🧰 Recursos

Test

Comprueba tus conocimientos con un test sobre React.

Test de React

¿Qué es esto?

Soy Cristian Eslava y a veces hago webs para procrastinar yo y vosotros 😉.

Esta la hice en febrero de 2026 para facilitar el aprendizaje de mis alumnxs. Aprender desarrollo web practicando. La idea es que crezca semanalmente con nuevos temas, tests y retos.

Inspirado en MDN, en W3Schools, en Codepen, en el crack de Manz y en mil sitios de documentación sobre desarrollo web. Quería aportar además de bloques teóricos con ejemplos, la gamificación de los retos y el sistema de test que ya tenía en culTest .

Si te gustó, si no te gustó, si quieres saludarme, o invitarme a 🍻 no dudes en escribirme en cristianeslava@gmail.com .