Rutas Anidadas y Lazy Loading en React con React Router Dom

Clase 11 de 31Curso de React Avanzado

Resumen

Aprende a configurar rutas anidadas en React Router DOM y aplicar lazy loading con Suspense para mejorar una navegación fluida en un Dashboard con vistas overview y settings. Verás cómo usar el asterisco en la ruta padre, definir rutas hijas sin slash, aprovechar Link y renderizar contenido con Outlet, además de un fallback de loading mientras carga el componente.

¿Qué son las rutas anidadas en React Router y cómo se configuran?

Las rutas anidadas permiten navegar dentro de un componente padre como Dashboard. Se crea una ruta padre con asterisco: "dashboard/" para que reconozca subrutas. Luego, se definen rutas internas como overview y settings* sin el slash inicial, cada una con su componente.

  • Agrega la página Dashboard al navbar y a las rutas principales.
  • Define la ruta padre con asterisco: "dashboard/*".
  • Crea las subrutas: "overview" y "settings" sin slash inicial.
  • Asigna el componente correspondiente a cada subruta.
  • Importa los componentes creados para evitar errores al compilar.

En el componente Dashboard, la renderización de las subrutas ocurre con Outlet. Así, cuando visitas "dashboard/overview" o "dashboard/settings", se muestra el contenido hijo dentro del padre.

¿Cómo navegar entre overview y settings dentro de dashboard?

Para moverte entre las vistas internas, usa Link (importado desde React Router DOM) con rutas relativas: "overview" y "settings". En el Dashboard, coloca una lista de enlaces y evita el slash inicial en la propiedad "to". Inserta Outlet donde quieras que aparezcan las subrutas.

  • Usa Link con paths relativos: "overview" y "settings".
  • Evita el slash inicial en "to" para mantener la ruta anidada.
  • Inserta Outlet en Dashboard para renderizar las subrutas.
  • Observa el cambio de URL: "dashboard/overview" y "dashboard/settings".

Cuando haces clic en Dashboard sin subruta, se muestra el contenido base del padre (mensaje de bienvenida). Para ver cada vista, entra a overview o settings desde los enlaces internos.

¿Cómo aplicar lazy loading con Suspense y fallback en settings?

Para cargar de forma diferida el contenido de settings, importa Suspense desde React y envuelve el element de esa ruta. Define un fallback que muestre un indicador (por ejemplo, un div con "loading...") mientras el componente termina de cargar.

  • Importa { Suspense } desde React.
  • Envuelve el element de la ruta de settings con Suspense.
  • Añade un fallback: texto "loading..." o un shimmer.
  • Prueba en el navegador: primero verás el loading y luego el componente cargado.

¿Quieres que preparemos una variante con más subrutas o un fallback visual más elaborado? Cuéntame en los comentarios qué te gustaría explorar a continuación.