Mặc định
Progress indicator mặc định của Inertia là một lớp bọc nhẹ quanh thư viện NProgress. Bạn có thể tùy chỉnh thông qua propertyprogress của hàm createInertiaApp().
progress thành false.
Tùy chỉnh
Bạn cũng có thể tự thiết lập chỉ báo tải trang tùy chỉnh bằng events của Inertia. Hãy xem cách thực hiện với thư viện NProgress làm ví dụ. Trước tiên, hãy tắt loading indicator mặc định của Inertia.NProgress và router của Inertia vào ứng dụng.
start. Chúng ta sẽ dùng listener này để hiển thị progress bar khi một Inertia visit mới bắt đầu.
finish để ẩn progress bar khi visit hoàn tất.
Xử lý visit bị hủy
Mặc dù phần triển khai progress tùy chỉnh này hoạt động tốt với các page visit hoàn tất bình thường, sẽ tốt hơn nếu xử lý cả visit bị hủy. Thứ nhất, với visit bị gián đoạn (bị hủy do một visit mới bắt đầu), progress bar chỉ nên được reset về vị trí bắt đầu. Thứ hai, với visit bị hủy thủ công, progress bar nên được loại bỏ khỏi trang ngay lập tức. Chúng ta có thể thực hiện bằng cách kiểm tra objectevent.detail.visit được cung cấp cho sự kiện finish.
Tiến trình tải file
Hãy tiến thêm một bước. Khi file đang được tải lên, sẽ rất hữu ích nếu loading indicator phản ánh đúng tiến trình upload. Bạn có thể làm việc này bằng sự kiệnprogress.
Trì hoãn loading indicator
Phần cuối cùng chúng ta sẽ triển khai là độ trễ trước khi hiển thị loading indicator. Thông thường nên trì hoãn việc hiển thị cho đến khi request kéo dài hơn 250–500 mili giây. Điều này tránh loading indicator xuất hiện liên tục ở các page visit rất nhanh, vốn có thể gây rối mắt. Để triển khai độ trễ, chúng ta sẽ dùng các hàmsetTimeout và clearTimeout. Trước tiên, hãy định nghĩa một biến để theo dõi timeout.
start để tạo timeout mới, hiển thị progress bar sau 250 mili giây.
finish để xóa mọi timeout còn tồn tại nếu page visit hoàn tất trước khi timeout kết thúc.
finish, chúng ta cần xác định progress bar đã thực sự bắt đầu hiển thị tiến trình hay chưa; nếu không, vô tình chúng ta sẽ khiến nó xuất hiện trước khi timeout kết thúc.
progress.