Tạo layout
Layout là component tiêu chuẩn nhận nội dung con. Không có gì đặc thù Inertia trong bản thân layout.Layout duy trì xuyên suốt
Bao page bằng layout dưới dạng child component vẫn hoạt động, nhưng đồng nghĩa layout bị hủy và tạo lại ở mọi visit. Điều này ngăn duy trì layout state qua các lần điều hướng, chẳng hạn audio player cần tiếp tục phát hoặc sidebar cần giữ vị trí cuộn. Persistent layout giải quyết vấn đề này bằng cách cho Inertia biết layout nào được dùng cho page. Inertia quản lý instance layout riêng và giữ nó sống giữa các visit.Nested layouts
Bạn có thể tạo bố cục layout phức tạp hơn bằng nested layout. Truyền một mảng layout component để bao page qua nhiều lớp.Layout mặc định
Tùy chọnlayout trong createInertiaApp cho phép định nghĩa layout mặc định cho mọi page, tránh phải khai báo ở từng page. Layout theo từng page luôn ưu tiên hơn layout mặc định.
layout hỗ trợ mọi định dạng layout, bao gồm mảng cho nested layouts, object có tên cho named layouts, và tuple cho static props.
Sử dụng Resolve callback
Bạn cũng có thể đặt layout mặc định bên trong callbackresolve bằng cách mutate page component đã resolve. Callback nhận tên component và full page object, hữu ích khi cần áp dụng layout có điều kiện dựa trên page data.
Layout props
Persistent layout thường cần dữ liệu động từ page hiện tại, chẳng hạn page title, navigation item đang active hoặc trạng thái bật/tắt sidebar. Layout prop cung cấp cách định nghĩa giá trị mặc định trong layout và override từ bất kỳ page nào.Định nghĩa giá trị mặc định
Layout prop được định nghĩa như component prop thông thường với giá trị mặc định.Static props
Bạn có thể truyền static prop trực tiếp trong định nghĩa persistent layout bằng tuple. Các prop này được đặt một lần khi layout được định nghĩa và không thay đổi giữa các lần điều hướng page.Callback props
Đôi khi layout prop cần được suy ra từ prop của page hiện tại. Callback function nhận page props và trả về layout definition với static prop đã tính toán.LayoutCallback để đảm bảo type safety.
Chỉ trả props
Khi default layout được cấu hình trongcreateInertiaApp, callback có thể trả plain props object thay vì full layout definition. Inertia tự động dùng default layout và merge các prop được trả vào layout đó.
Dynamic props
Bạn cũng có thể cập nhật layout prop động từ bất kỳ page component nào bằng hàmsetLayoutProps. Người dùng TypeScript có thể khai báo type cho các prop này trên toàn cục.
Nhắm đến named layouts
Nested layouts cũng có thể được định nghĩa dưới dạng named object thay vì mảng, cho phép nhắm tới layout cụ thể bằng prop.setLayoutProps.
Thứ tự ưu tiên khi merge
Layout prop được resolve từ nhiều nguồn theo thứ tự ưu tiên sau, từ cao xuống thấp:- Dynamic props - được đặt qua
setLayoutProps() - Static props - được định nghĩa trong persistent layout definition (bao gồm callback props)
- Defaults - được khai báo là giá trị mặc định trên prop của layout component
Tự động reset khi điều hướng
Dynamic layout prop tự động reset khi điều hướng tới page mới (trừ khi bậtpreserveState). Điều này đảm bảo mỗi page bắt đầu với trạng thái sạch và chỉ áp dụng các layout prop được page đó thiết lập rõ ràng.
Reset props
Bạn cũng có thể reset thủ công toàn bộ dynamic layout prop bằngresetLayoutProps.