0Pricing
React Academy · Lección

Rutas dinámicas y grupos de rutas

Cree segmentos dinámicos [slug], grupos de rutas con (folder) y rutas paralelas.

Rutas dinámicas y grupos de rutas es una lección gratuita de React Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de React Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de React Academy incluye 4 lecciones en total.

Segmentos dinámicos

Rodee el nombre de una carpeta con corchetes para crear un segmento dinámico. El valor está disponible en params, que se pasa a la página.

// app/products/[id]/page.tsx
export default function ProductPage({ params }: { params: { id: string } }) {
  return <h1>Product {params.id}</h1>;
}
// → /products/123 → params.id = '123'

Parámetros tipados

Los parámetros siempre son cadenas en la URL. Analícelos explícitamente cuando representen identificadores numéricos.

export default async function PostPage({ params }: { params: { slug: string } }) {
  const post = await getPostBySlug(params.slug);
  if (!post) notFound();
  return <article>{post.content}</article>;
}

Segmentos de captura total

Utilice [...slug] para coincidir con cualquier cantidad de segmentos de ruta. El valor es una matriz de cadenas.

// app/docs/[...path]/page.tsx
export default function DocsPage({ params }: { params: { path: string[] } }) {
  // /docs/react/hooks → params.path = ['react', 'hooks']
  return <DocViewer path={params.path} />;
}

Captura total opcional

[[...slug]] también coincide con el segmento raíz, lo que resulta útil para prefijos de ruta opcionales.

// app/[[...lang]]/page.tsx
// Matches /, /en, /en/about, /fr/products/123
export default function Page({ params }: { params: { lang?: string[] } }) {
  const lang = params.lang?.[0] ?? 'en';
  return <div lang={lang}>...</div>;
}

generateStaticParams

Exporte generateStaticParams() para prerenderizar las rutas dinámicas durante la compilación y generar HTML estático para cada combinación de parámetros.

export async function generateStaticParams() {
  const posts = await getPosts();
  return posts.map(p => ({ slug: p.slug }));
}
// → builds /blog/hello-world, /blog/react-tips etc. statically

Grupos de rutas — (folder)

Rodee el nombre de una carpeta con paréntesis para crear un grupo de rutas. Esto organiza los archivos sin añadir un segmento a la URL.

// File structure:
// app/(marketing)/about/page.tsx → /about
// app/(marketing)/blog/page.tsx  → /blog
// app/(app)/dashboard/page.tsx   → /dashboard
// (marketing) and (app) don't appear in URLs

Grupos de rutas con layouts compartidos

Cada grupo de rutas puede tener su propio layout.tsx, lo que permite asignar distintos layouts a diferentes secciones sin anidarlas en la URL.

// app/(marketing)/layout.tsx — marketing shell
// app/(app)/layout.tsx — authenticated app shell
// Both groups share app/layout.tsx as the root

Rutas paralelas — @slot

Anteceda una carpeta con @ para crear un slot. Los slots se renderizan simultáneamente en el layout principal, lo que resulta útil para modales, pantallas divididas o pestañas.

// app/@modal/login/page.tsx
// app/layout.tsx
export default function RootLayout({ children, modal }) {
  return (
    <div>
      {children}
      {modal} {/* renders @modal/login/page.tsx side by side */}
    </div>
  );
}

Rutas interceptadas — (..)

Utilice la notación (..) para interceptar una ruta y renderizarla en línea; por ejemplo, para abrir una foto en un modal en lugar de navegar a una página nueva.

// Soft navigation shows modal:
// app/@modal/(..)/photos/[id]/page.tsx
// Hard navigation shows full page:
// app/photos/[id]/page.tsx

Metadatos de rutas dinámicas

Exporte una función asíncrona generateMetadata en las rutas dinámicas para establecer etiquetas de SEO específicas de cada página según los parámetros de la ruta.

export async function generateMetadata({ params }: { params: { id: string } }) {
  const product = await getProduct(params.id);
  return { title: product.name, description: product.description };
}

Comprobación rápida

¿Qué efecto tiene rodear el nombre de una carpeta con paréntesis en el App Router de Next.js?

Resumen

[id] crea segmentos dinámicos, [...slug] captura todas las subrutas y [[...slug]] las convierte en opcionales. Los grupos de rutas con (name) organizan el código sin afectar a la URL y permiten utilizar layouts específicos para cada grupo. Utilice generateStaticParams para prerenderizar durante la compilación.

Preguntas frecuentes

¿La lección «Rutas dinámicas y grupos de rutas» es gratis?

Sí — el texto completo de «Rutas dinámicas y grupos de rutas» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de React Academy, actualiza a CoddyKit PRO. El curso de React Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Rutas dinámicas y grupos de rutas»?

Cree segmentos dinámicos [slug], grupos de rutas con (folder) y rutas paralelas. Practicas React Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar React Academy?

No se requiere experiencia previa. React Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «Rutas dinámicas y grupos de rutas»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de React Academy?

Sí. Cada lección de React Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Convenciones de archivos de App Router
  2. Componentes de servidor frente a componentes de cliente en Next.js
  3. Rutas dinámicas y grupos de rutas
  4. API de metadatos y SEO en App Router
← Volver a React Academy