Skip to main content
Đây là tài liệu Inertia.js v1, phiên bản không còn được duy trì tích cực. Vui lòng tham khảo tài liệu v3.
Ngoài việc tạo liên kết, bạn cũng có thể chủ động thực hiện các lần truy cập / request Inertia bằng JavaScript. Việc này được thực hiện qua phương thức router.visit().
Tuy nhiên, nhìn chung sẽ thuận tiện hơn khi sử dụng một trong các phương thức request rút gọn của Inertia. Những phương thức này hỗ trợ đầy đủ các tùy chọn giống router.visit().
Phương thức reload() là cách viết tắt tiện lợi, tự động truy cập lại trang hiện tại với cả preserveStatepreserveScroll đều được đặt thành true, vì vậy rất phù hợp khi bạn chỉ muốn tải lại dữ liệu của trang hiện tại.

Phương thức

Khi thực hiện truy cập thủ công, bạn có thể dùng tùy chọn method để đặt HTTP method của request thành get, post, put, patch hoặc delete. Method mặc định là get.
Laravel không hỗ trợ tải file trực tiếp qua put hoặc patch. Thay vào đó, hãy gửi request bằng post và kèm field _method có giá trị put hoặc patch. Kỹ thuật này được gọi là giả lập HTTP method của form.

Dữ liệu

Bạn có thể dùng tùy chọn data để thêm dữ liệu vào request.
Để thuận tiện, các phương thức get(), post(), put()patch() đều nhận data làm đối số thứ hai.

Header tùy chỉnh

Tùy chọn headers cho phép bạn thêm header tùy chỉnh vào request.
Các header mà Inertia sử dụng nội bộ để truyền trạng thái của nó tới máy chủ có độ ưu tiên cao hơn và vì vậy không thể bị ghi đè.

Tải file lên

Khi thực hiện lần truy cập / request có chứa file, Inertia sẽ tự động chuyển dữ liệu request thành object FormData. Nếu muốn request luôn dùng object FormData, bạn có thể sử dụng tùy chọn forceFormData.
Để biết thêm thông tin về tải file lên, hãy xem tài liệu chuyên biệt về tải file.

Lịch sử trình duyệt

Khi thực hiện các lần truy cập, Inertia tự động thêm một entry mới vào lịch sử trình duyệt. Tuy nhiên, bạn cũng có thể thay thế entry lịch sử hiện tại bằng cách đặt tùy chọn replace thành true.
Các lần truy cập đến cùng một URL sẽ tự động đặt replace thành true.

Giữ lại state

Mặc định, các lần truy cập lại cùng một trang sẽ tạo một instance page component mới. Điều này khiến các state cục bộ như input của form, vị trí cuộn và trạng thái focus bị mất. Tuy nhiên, trong một số tình huống, cần giữ lại state của page component. Ví dụ, khi submit form, bạn cần giữ dữ liệu form nếu validation form thất bại ở phía máy chủ. Vì lý do này, các phương thức post, put, patch, deletereload đều đặt tùy chọn preserveState thành true theo mặc định. Bạn có thể yêu cầu Inertia giữ state của component khi sử dụng phương thức get bằng cách đặt tùy chọn preserveState thành true.
Nếu chỉ muốn giữ state khi response có chứa lỗi validation, hãy đặt tùy chọn preserveState thành “errors”.
Bạn cũng có thể đánh giá trì hoãn tùy chọn preserveState dựa trên response bằng cách cung cấp một callback.

Giữ vị trí cuộn

Khi điều hướng giữa các trang, Inertia mô phỏng hành vi mặc định của trình duyệt bằng cách tự động đưa vị trí cuộn của body tài liệu (cũng như mọi vùng cuộn bạn đã định nghĩa) trở lại đầu trang. Bạn có thể tắt hành vi này bằng cách đặt tùy chọn preserveScroll thành false.
Nếu chỉ muốn giữ vị trí cuộn khi response có lỗi validation, hãy đặt tùy chọn preserveScroll thành “errors”.
Bạn cũng có thể đánh giá trì hoãn tùy chọn preserveScroll dựa trên response bằng cách cung cấp một callback.
Để biết thêm thông tin về tính năng này, hãy xem tài liệu quản lý cuộn.

Tải lại một phần

Tùy chọn only cho phép bạn chỉ yêu cầu một tập con props (dữ liệu) từ máy chủ trong các lần truy cập tiếp theo đến cùng một trang, qua đó giúp ứng dụng hiệu quả hơn vì không cần truy xuất dữ liệu mà trang không có nhu cầu làm mới.
Để biết thêm thông tin về tính năng này, hãy xem tài liệu tải lại một phần.

Hủy lần truy cập

Bạn có thể hủy một lần truy cập bằng cancel token mà Inertia tự động tạo và cung cấp thông qua callback onCancelToken() trước khi thực hiện truy cập.
Các callback sự kiện onCancel()onFinish() sẽ được thực thi khi một lần truy cập bị hủy.

Callback sự kiện

Ngoài sự kiện toàn cục của Inertia, Inertia còn cung cấp một số callback sự kiện dành riêng cho từng lần truy cập.
Trả về false từ callback onBefore() sẽ khiến lần truy cập bị hủy.
Bạn cũng có thể trả về promise từ các callback onSuccess()onError(). Khi làm vậy, sự kiện “finish” sẽ được trì hoãn cho đến khi promise được resolve.

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