Router visits
Bạn có thể nối phương thứcoptimistic() trước bất kỳ router visit nào. Callback nhận page props hiện tại và nên trả partial update cần áp dụng ngay.
Component Form
Component<Form> hỗ trợ optimistic update qua prop optimistic. Vì component quản lý input data nội bộ, form data được cung cấp làm đối số thứ hai của callback.
Form helper
HelperuseForm cũng hỗ trợ optimistic update qua cùng phương thức optimistic().
HTTP requests
HookuseHttp cũng hỗ trợ optimistic update. Vì HTTP request không tương tác với page props của Inertia, optimistic callback nhận và cập nhật dữ liệu riêng của form. Khi thất bại, form data được khôi phục về state trước request.
Cách hoạt động
Khi optimistic update được áp dụng:- Prop được trả về được so sánh với page prop hiện tại và chỉ những key thực sự thay đổi mới được snapshot
- Giá trị callback trả về được merge vào dữ liệu hiện tại
- Request được gửi tới server
- Khi thành công, response của server thay thế dữ liệu optimistic
- Khi thất bại, chỉ những key đã snapshot được khôi phục, rollback các thay đổi optimistic
Tự động rollback
Optimistic state tự động được khôi phục trong một số trường hợp:- Validation error (422): Optimistic state được khôi phục và validation error được giữ lại
- Server error: Khi request thất bại vì bất kỳ lý do nào khác, state ban đầu được khôi phục
- Visit bị gián đoạn: Khi visit mới ngắt request đang chạy, optimistic state trước đó được khôi phục trước khi optimistic update mới được áp dụng
Cập nhật đồng thời
Nhiều optimistic request có thể chạy cùng lúc. Inertia theo dõi prop nào được mỗi optimistic update chạm tới, và server response sẽ không ghi đè một prop cho tới khi optimistic request cuối cùng sửa prop đó đã resolve.Tùy chọn inline
Bạn cũng có thể truyền optimistic callback trực tiếp trong visit options thay vì nối method.useHttp.