Skip to main content
Inertia cung cấp một hệ thống sự kiện cho phép bạn “hook” vào nhiều sự kiện khác nhau trong lifecycle của thư viện.

Đăng ký listener

Để đăng ký event listener, dùng phương thức router.on().
Bên dưới, Inertia dùng native browser event, nên bạn cũng có thể tương tác với Inertia event bằng các event method quen thuộc. Chỉ cần nhớ thêm tiền tố inertia: vào event name.

Gỡ listener

Khi bạn đăng ký event listener, Inertia tự động trả về một callback có thể gọi để gỡ listener đó.
Kết hợp với hook, bạn có thể tự động gỡ event listener khi component unmount.
Ngoài ra, nếu đang dùng event nguyên bản của trình duyệt, bạn có thể gỡ listener bằng removeEventListener().

Listener chỉ chạy một lần

Bạn có thể đăng ký listener chỉ chạy một lần bằng phương thức router.once(). Listener tự động bị xóa sau lần gọi đầu tiên.
Giống router.on(), phương thức này trả callback mà bạn có thể gọi để xóa listener trước khi nó chạy.

Hủy event

Một số event như before, networkError, httpExceptionlocation hỗ trợ hủy, cho phép ngăn hành vi mặc định của Inertia. Giống native event, event sẽ bị hủy nếu chỉ cần một listener gọi event.preventDefault().
Để thuận tiện, nếu đăng ký event listener bằng router.on(), bạn có thể hủy event bằng cách trả về false từ listener.
Lưu ý browser không cho phép hủy native event popstate, vì vậy không thể ngăn history visit forward/back bằng Inertia.

Before

Sự kiện before được phát ngay trước khi một request chuẩn bị được gửi đến máy chủ. Điều này hữu ích để chặn visit.
Mục đích chính của sự kiện này là cho phép bạn ngăn một visit diễn ra.

Start

Sự kiện start được phát khi request đến máy chủ đã bắt đầu. Sự kiện này hữu ích để hiển thị loading indicator.
Sự kiện start không thể bị hủy.

Progress

Sự kiện progress được phát khi tiến trình tăng lên trong quá trình tải file.
Sự kiện progress không thể bị hủy.

Success

Event success chạy khi page visit thành công, trừ khi có validation error. Tuy nhiên, điều này không bao gồm history visit.
Sự kiện success không thể bị hủy.

Flash

Event flash chạy khi nhận flash data từ server. Điều này hữu ích để hiển thị toast hoặc xử lý dữ liệu tạm thời tại một vị trí tập trung.
Event flash không thể bị hủy và được phát trên mọi response có chứa flash data.

Error

Sự kiện error được phát khi có lỗi validation trong các page visit “thành công”.
Sự kiện error không thể bị hủy.

HTTP Exception

Event httpException chạy khi nhận response không phải Inertia từ server, chẳng hạn HTML hoặc JSON response. Inertia response hợp lệ có header X-Inertia đặt thành true và JSON payload chứa page object. Event này chạy cho mọi loại response, bao gồm code 200, 400500.
Bạn có thể hủy event httpException để ngăn Inertia hiển thị modal response không phải Inertia.

Network Error

Event networkError chạy khi xảy ra XHR error ngoài dự kiến như mất kết nối mạng. Ngoài ra event cũng chạy với error phát sinh khi resolve page component.
Bạn có thể hủy event networkError để ngăn exception bị ném.
Event này không chạy với XHR request nhận response mức 400500 hoặc response không phải Inertia, vì các tình huống đó được Inertia xử lý theo cách khác. Xem tài liệu xử lý lỗi để biết thêm.

Finish

Sự kiện finish được phát sau khi một request XHR hoàn tất, áp dụng cho cả response “thành công” lẫn “không thành công”. Sự kiện này hữu ích để ẩn loading indicator.
Sự kiện finish không thể bị hủy. Sự kiện navigate được phát khi page visit thành công, cũng như khi điều hướng qua lịch sử trình duyệt.
Sự kiện navigate không thể bị hủy.

Location

v3.6.0+ Event location chạy mỗi khi Inertia chuẩn bị ép full-page navigation, do asset version thay đổi hoặc server trả redirect Inertia::location(). Event detail chứa boolean versionChange để phân biệt automatic asset version change với manual redirect.
Bạn có thể hủy event location để tự tiếp quản navigation, ví dụ hiển thị banner “có phiên bản mới” thay vì reload.

Prefetch

Event prefetching được kích hoạt khi router bắt đầu prefetch một trang.
Event prefetching không thể hủy.

Prefetched

Event prefetched được kích hoạt khi router đã prefetch một trang thành công.
Event prefetched không thể hủy.

Callback sự kiện

Ngoài các global event được mô tả trong trang này, Inertia còn cung cấp nhiều event callback chạy khi bạn thực hiện Inertia visit thủ công.

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 v3 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.