Partes do site em componentes no NextJS

Na lição anterior, escrevemos o texto das partes do site diretamente no arquivo de layout:

app/layout.jsxexport default function RootLayout({children}) {
  return (
    <html lang="en">
      <body>
        <header>
          header
        </header>
        <main>
          {children}
        </main>
        <footer>
          footer
        </footer>
      </body>
    </html>
  );
}

No entanto, isso pode ser inconveniente quando as partes do site contêm muito código e texto. Portanto, geralmente as partes do site são extraídas em arquivos separados de componentes.

Vamos, por exemplo, extrair o cabeçalho do site em um componente separado. Vamos criar o arquivo correspondente:

comp/header/header.jsxexport default function Header() {
  return <>
    header
  </>;
}

Vamos importar nosso componente no arquivo de layout:

app/layout.jsximport Header from '@/comp/header/header.jsx';

export default function RootLayout({children}) {
  
}

Vamos renderizar o texto do nosso componente usando a tag com seu nome:

app/layout.jsximport Header from '@/comp/header/header.jsx';

export default function RootLayout({children}) {
  return (
    <html lang="en">
      <body>
        <header>
          <Header />
        </header>
        <main>
          {children}
        </main>
        <footer>
          footer
        </footer>
      </body>
    </html>
  );
}
Задание 1

Crie componentes separados para o cabeçalho e o rodapé do site.