Form UX: loading, validation, success & cancel
Một form tốt không chỉ “submit được”. Người dùng cần biết request đang chạy, field nào sai, dữ liệu đã lưu chưa và chuyện gì xảy ra nếu đóng modal giữa chừng.Mẫu useForm
Phân biệt các state
Không dùng client validation để thay backend validation
Client validation có thể cải thiện UX, nhưng policy/rule cuối cùng vẫn phải ở server. Nếu browser bị bypass, request trực tiếp vẫn phải bị chặn.Error flow trong Inertia
Với Laravel, validation thường redirect back cùng session errors. Inertia adapter nhận errors ở request kế tiếp và đưa chúng vào form/page props. Vì state của mutation request được preserve phù hợp, input người dùng không cần tự repopulate bằng một REST-style422 JSON flow.
Modal form và request đang chạy
Nếu modal đóng nhưng component chưa điều hướng đi đâu, request có thể vẫn tiếp tục. Nếu business case yêu cầu đóng modal là hủy upload/mutation, gọiform.cancel() khi đóng hoặc dùng Form component với cancelOnUnmount ở nơi phù hợp.
Một form production hoàn chỉnh
Unsaved-change guard
Đừng chặn navigation vô điều kiện; chỉ cảnh báo khi form dirty:beforeunload, nhớ cleanup listener và đừng biến nó thành modal khó thoát sau success/reset.
Multi-form page
Mỗi form nên có instance/key riêng:errors global rồi tự đoán error thuộc form nào.