Bố cục gốc
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 11 trên 47.
Ứng dụng nào cũng có những phần không bao giờ thay đổi: khung trang, đầu trang, chân trang. Trong Next.js, những phần đó nằm trong bố cục (layout), và bố cục ngoài cùng được gọi là bố cục gốc (root layout).
Đó chính là tệp luôn được mở trước mắt bạn:
// app/layout.jsx
export default function RootLayout({ children }) {
return (
<html lang="en">
<body>
{children}
</body>
</html>
);
}Có ba điểm khiến nó khác với một trang:
- Nó bắt buộc phải có và là tệp duy nhất kết xuất
<html>và<body> - Nó nhận
children, tức là trang mà URL khớp với. Nếu quên kết xuất{children}, ứng dụng của bạn sẽ chỉ hiển thị phần khung. - Nó bao bọc mọi tuyến đường trong ứng dụng mà không cần trang nào nhập nó
Nó vẫn được giữ lại
Đây là điều khiến nhiều người bất ngờ. Khi người dùng chuyển từ / sang /menu, layout không được tạo lại. Next.js thay trang bên trong layout và giữ nguyên layout.
Nhờ vậy, phần đầu trang dùng chung không nhấp nháy, video trong thanh bên vẫn phát và mọi trạng thái trong bố cục được giữ nguyên khi chuyển trang: menu đang mở vẫn mở, vị trí cuộn vẫn giữ nguyên. Bố cục là một khung tồn tại lâu dài; các trang lần lượt xuất hiện rồi biến mất bên trong.
Một hệ quả đáng nhớ: vì layout không chạy lại khi điều hướng, nên nó không thể đọc searchParams của trang hiện tại. Nó không theo dõi thay đổi đó.
Tự làm thử
Bài học này không có thử thách code.
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
4Máy chủ và client
Hai loại thành phầnĐọc lỗiDòng 'use client'Giữ phần client nhỏ gọnMáy chủ bên trong clientTóm tắt: máy chủ và client7Điều hướng phía máy khách
Liên kết đang hoạt độngĐiều hướng bằng codeLọc bằng URLBộ xử lý tuyến đườngÔn tập: Điều hướng2Định tuyến và liên kết
Thư mục tạo thành tuyến đườngTuyến đường lồng nhauLiên kết các trangTuyến đường độngTrang không tìm thấyÔn tập: định tuyến3Bố cục và siêu dữ liệu
Bố cục gốcĐiều hướng dùng chungBố cục lồng nhauSiêu dữ liệu trangSiêu dữ liệu độngÔn tập: bố cục