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.
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 sử dụng event nguyên bản của trình duyệt nên bạn cũng có thể tương tác với sự kiện Inertia bằng các phương thức event thông thường mà bạn đã quen dùng — chỉ cần nhớ thêm tiền tố inertia: vào tên sự kiện.

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().

Hủy sự kiện

Một số event như before, exceptioninvalid hỗ trợ hủy, cho phép bạn ngăn hành vi mặc định của Inertia. Tương tự event nguyên bản, event sẽ bị hủy nếu chỉ cần một event 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 ý, trình duyệt không cho phép hủy event nguyên bản popstate, vì vậy không thể ngăn các lần điều hướng tiến và lùi trong lịch sử khi sử dụng Inertia.js.

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

Sự kiện success được phát khi page visit thành công, trừ khi có lỗi validation. Tuy nhiên, điều này không bao gồm các visit trong lịch sử trình duyệt.
Sự kiện success không thể bị hủy.

Flash

v2.3.3+ Event flash được kích hoạt khi flash data được nhận 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ể hủy. Partial reload chỉ kích hoạt event nếu flash data đã thay đổi.

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.

Invalid

Event invalid được kích hoạt khi nhận response không phải Inertia từ server, chẳng hạn HTML hoặc JSON thông thường. Response Inertia hợp lệ phải có header X-Inertia đặt thành true, cùng payload json chứa page object. Sự kiện này được phát với mọi loại response, bao gồm các mã response 200, 400500.
Bạn có thể hủy sự kiện invalid để ngăn Inertia hiển thị modal chứa response không phải Inertia.

Exception

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

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.

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 event toàn cục được mô tả trong trang này, Inertia còn cung cấp một số event callback được kích hoạt 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 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.