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`.

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. culTest

La hice en febrero de 2026 para facilitar el aprendizaje de mis alumnos. La idea es aprender desarrollo web practicando y que el proyecto siga creciendo con nuevos temas, tests y retos.

Está inspirada en MDN, W3Schools, CodePen, Manz y muchos otros sitios de documentación sobre desarrollo web. Quería combinar teoría útil, ejemplos ejecutables, retos y el sistema de tests que ya tenía en culTest. culTest

Si te gustó, si no te gustó o si quieres escribirme, puedes hacerlo en cristianeslava@gmail.com