Skip to main content
Bạn đang xem tài liệu Inertia.js v2. Inertia.js v3 đã được phát hành và hiện là phiên bản mặc định. Hãy xem hướng dẫn nâng cấp để bắt đầu.
Khi truy cập lại đúng trang hiện tại, không phải lúc nào cũng cần lấy lại toàn bộ dữ liệu của trang từ máy chủ. Thực tế, chỉ chọn một tập con dữ liệu có thể là một cách tối ưu hiệu năng hữu ích nếu bạn chấp nhận một phần dữ liệu trang trở nên cũ. Inertia hỗ trợ việc này thông qua tính năng “partial reload”. Ví dụ, hãy xem một trang “danh sách người dùng” có danh sách người dùng cùng tùy chọn lọc theo công ty. Ở request đầu tiên đến trang, cả props userscompanies đều được truyền vào page component. Tuy nhiên, ở những lần truy cập tiếp theo đến cùng trang đó (chẳng hạn để lọc người dùng), bạn có thể chỉ yêu cầu dữ liệu users từ máy chủ mà không yêu cầu companies. Sau đó Inertia sẽ tự động merge dữ liệu một phần trả về từ máy chủ với dữ liệu đã có sẵn trong bộ nhớ phía client. Partial reload chỉ hoạt động với các lần truy cập đến cùng một page component.

Chỉ lấy một số prop nhất định

Để thực hiện partial reload, dùng tùy chọn visit only để chỉ định dữ liệu máy chủ cần trả về. Tùy chọn này là một mảng các key tương ứng với key của props.

Loại trừ một số prop nhất định

Ngoài tùy chọn visit only, bạn cũng có thể dùng tùy chọn except để chỉ định dữ liệu máy chủ cần loại trừ. Tùy chọn này cũng là một mảng key tương ứng với key của props.

Cú pháp rút gọn của router

Vì partial reload chỉ có thể thực hiện trên đúng page component mà người dùng đang ở, gần như lúc nào cũng hợp lý khi dùng phương thức router.reload(), phương thức này tự động dùng URL hiện tại.

Sử dụng liên kết

Bạn cũng có thể thực hiện partial reload bằng liên kết Inertia thông qua thuộc tính only.

Đánh giá dữ liệu theo kiểu lazy

Để partial reload đạt hiệu quả cao nhất, hãy dùng cả lazy data evaluation khi trả props từ route hoặc controller phía máy chủ. Bạn có thể thực hiện bằng cách bọc toàn bộ dữ liệu trang tùy chọn trong một closure.
Khi Inertia thực hiện request, nó sẽ xác định dữ liệu nào thực sự cần thiết rồi mới evaluate closure. Điều này có thể cải thiện đáng kể hiệu năng của những trang có nhiều dữ liệu tùy chọn. Ngoài ra, Inertia cung cấp method Inertia::optional() để chỉ định một prop không bao giờ được đưa vào trừ khi được yêu cầu rõ ràng bằng tùy chọn only:
Ngược lại, bạn có thể dùng phương thức Inertia::always() để chỉ định một prop luôn phải được gửi kèm, kể cả khi prop đó không được yêu cầu rõ ràng trong partial reload.
Dưới đây là tóm tắt của từng cách tiếp cận:

Kết hợp với Once Props

Bạn có thể chain modifier once() vào một optional prop để đảm bảo dữ liệu chỉ được resolve một lần và được client ghi nhớ qua các lần điều hướng tiếp theo.
Để biết thêm về once props, xem tài liệu once props.

Tài liệu chính thức

Bài dịch này được đối chiếu từ tài liệu Inertia.js v2 chính thức. Nếu có khác biệt do phiên bản hoặc cập nhật mới, hãy ưu tiên tài liệu chính thức làm nguồn tham chiếu.