Menu
CoddyTech

Bố cục lồng nhau

Thuộc phần Kiến thức thiết yếu về Next.js trong hành trình React của Coddy. Bài học 13 trên 47.

Bố cục gốc không phải là bố cục duy nhất. Thêm một layout.jsx vào bất kỳ thư mục nào, bố cục đó sẽ bao bọc các route của thư mục ấy và chỉ các route đó.

app/
    layout.jsx          wraps EVERYTHING
    page.jsx            /
    menu/
        layout.jsx      wraps /menu and everything under it
        page.jsx        /menu
        pizza/
            page.jsx    /menu/pizza

Truy cập /menu/pizza và Next.js lồng chúng theo thứ tự từ ngoài vào trong:

RootLayout
    MenuLayout
        PizzaPage

Truy cập / và chỉ bố cục gốc chạy: bố cục menu không nằm trong đường dẫn URL đó nên sẽ không bao giờ xuất hiện.

Bố cục lồng nhau được viết giống hệt bố cục gốc, chỉ bỏ phần khung: không có <html>, không có <body>. Chỉ là một component nhận children.

Đây là cách mỗi phần của trang web có thanh bên riêng, các tab riêng và tiêu đề riêng mà không cần một câu lệnh if nào về URL hiện tại.

challenge icon

Thử thách

Dễ

Phần menu cần có tiêu đề riêng: trên /menu và các trang món ăn, nhưng không ở nơi nào khác.

app/menu/layout.jsx đã có sẵn và chuyển thẳng children qua. Bên trong <section>, phía trên {children}, hãy thêm:

  • Một <h2> có id="menu-header" và văn bản Menu

Các bài kiểm tra xác nhận tiêu đề hiển thị trên /menu và /menu/pizza, đồng thời không còn hiển thị khi quay lại /.

Tự làm thử

import './globals.css';

export const metadata = {
    title: 'My App',
};

export default function RootLayout({ children }) {
    return (
        <html lang="en">
            <body>
                {children}
            </body>
        </html>
    );
}
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Kiến thức thiết yếu về Next.js