ส่วนต่างๆ ของเว็บไซต์ในคอมโพเนนต์ใน NextJS

ในบทเรียนที่แล้ว เราเขียนข้อความ ของส่วนต่างๆ ของเว็บไซต์ ลงในไฟล์เลย์เอาต์โดยตรง:

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

อย่างไรก็ตาม สิ่งนี้อาจไม่สะดวก ในกรณีที่ส่วนต่างๆ ของเว็บไซต์ มีโค้ดและข้อความจำนวนมาก ดังนั้นโดยปกติแล้วส่วนต่างๆ ของเว็บไซต์ จะถูกแยกออกเป็นไฟล์คอมโพเนนต์แยกต่างหาก

ลองมาแยกเฮดเดอร์ของเว็บไซต์ เป็นคอมโพเนนต์แยกกัน สร้างไฟล์ที่เกี่ยวข้อง:

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

นำเข้าคอมโพเนนต์ของเราในไฟล์เลย์เอาต์:

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

export default function RootLayout({children}) {
  
}

แสดงข้อความของคอมโพเนนต์ของเรา โดยใช้แท็กที่มีชื่อของมัน:

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

สร้างคอมโพเนนต์แยก สำหรับเฮดเดอร์และฟุตเตอร์ของเว็บไซต์