馃挰 Layouts y p谩ginas din谩micas

Layouts y p谩ginas din谩micas en Next.js

13 - 馃挰 Layouts y p谩ginas din谩micas en Next.js

Aprende c贸mo estructurar tu aplicaci贸n con layouts reutilizables y c贸mo crear rutas din谩micas usando corchetes. Veremos ejemplos pr谩cticos con _app.js, getStaticPaths y getStaticProps.


馃П ¿Qu茅 es un layout?

Un layout es una estructura visual que se reutiliza en varias p谩ginas. Por ejemplo: cabecera, men煤 lateral, pie de p谩gina, etc.

Puedes definir un layout global en _app.js o layouts por p谩gina.

// pages/_app.js
import Layout from '../components/Layout';

export default function MyApp({ Component, pageProps }) {
  return (
    <Layout>
      <Component {...pageProps} />
    </Layout>
  );
}
      

Y el componente Layout podr铆a verse as铆:

// components/Layout.js
export default function Layout({ children }) {
  return (
    <div>
      <header>馃寪 Mi sitio Next.js</header>
      <main>{children}</main>
      <footer>© 2025 Todos los derechos reservados</footer>
    </div>
  );
}
      
✅ Ideal para: mantener consistencia visual en todas las p谩ginas.

馃攧 ¿Qu茅 son las p谩ginas din谩micas?

Las p谩ginas din谩micas permiten crear rutas basadas en datos. Por ejemplo: /productos/1, /productos/2, etc.

Se crean usando corchetes en el nombre del archivo: [id].js

// pages/productos/[id].js
export async function getStaticPaths() {
  const res = await fetch('https://fakestoreapi.com/products');
  const productos = await res.json();

  const paths = productos.map(prod => ({
    params: { id: prod.id.toString() },
  }));

  return { paths, fallback: false };
}

export async function getStaticProps({ params }) {
  const res = await fetch(`https://fakestoreapi.com/products/${params.id}`);
  const producto = await res.json();

  return { props: { producto } };
}

export default function Producto({ producto }) {
  return (
    <div className="p-4">
      <h1 className="text-2xl font-bold mb-3">馃泹️ {producto.title}</h1>
      <p>馃挷{producto.price}</p>
      <p>{producto.description}</p>
    </div>
  );
}
      

馃З Resultado visual:

馃泹️ Producto: Camiseta de algod贸n

馃挷Precio: 19.99

馃搫 Descripci贸n: Camiseta suave y c贸moda para uso diario.

Ruta din谩mica generada con [id].js

馃挕 Ideal para: productos, perfiles de usuario, art铆culos de blog, etc.

馃挕 Consejo: puedes combinar layouts con p谩ginas din谩micas para crear sitios robustos y bien estructurados. Usa getStaticPaths para generar rutas din谩micas en el build y getStaticProps para pasar los datos.

Publicar un comentario

0 Comentarios