Skip to main content
Ngoài tạo link, bạn cũng có thể chủ động thực hiện Inertia visit hoặc request 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 qua put hoặc patch. Thay vào đó, hãy gửi request bằng post, kèm field _method đặt thành put hoặc patch. Kỹ thuật này gọi là form method spoofing.

Wayfinder

Khi sử dụng Wayfinder, bạn có thể truyền object kết quả trực tiếp vào bất kỳ phương thức router nào. Router sẽ tự suy ra HTTP method và URL từ object Wayfinder.
Nếu bạn vừa truyền Wayfinder object vừa chỉ định tùy chọn method, tùy chọn method sẽ được ưu tiên.

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ùy chọn visit toàn cục

Bạn có thể cấu hình callback visitOptions khi khởi tạo ứng dụng Inertia để thay đổi visit option trên toàn cục cho mọi request. Callback nhận target URL và các visit option hiện tại, rồi nên trả object chứa những option cần override.

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 về upload file, hãy xem tài liệu riêng về file uploads.

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.

Client-side visits

Bạn có thể dùng router.pushrouter.replace để thực hiện client-side visit. Các phương thức này hữu ích khi muốn cập nhật history của trình duyệt mà không gửi request tới server.
Tất cả tham số đều tùy chọn. Mặc định, mọi tham số được truyền vào (trừ errorBag) sẽ được merge với page hiện tại. Điều này có nghĩa bạn chịu trách nhiệm override URL, component và props của page hiện tại. Nếu cần truy cập props của page hiện tại, bạn có thể truyền function vào tùy chọn props. Function nhận props hiện tại (bao gồm mọi once props) và nên trả về props mới.
Function cũng nhận once props làm đối số thứ hai. Điều này hữu ích khi muốn thay toàn bộ regular props nhưng vẫn giữ once props.
Tùy chọn errorBag cho phép chỉ định error bag dùng khi xử lý lỗi validation trong callback onError. Hãy đảm bảo mọi route bạn push ở phía client cũng được định nghĩa ở phía máy chủ. Nếu người dùng refresh trang, máy chủ cần biết cách render trang đó.
Một số trình duyệt giới hạn số lần gọi history.pushState()history.replaceState() trong khoảng thời gian ngắn. Inertia bắt lỗi này và ghi ra console, nhưng state update sẽ bị mất. Tránh gọi router.push() hoặc router.replace() quá thường xuyên và cân nhắc debounce hoặc batch update trong các trường hợp tần suất cao.

Prop helper

Inertia cung cấp ba phương thức helper để cập nhật page props mà không gửi request đến máy chủ. Đây là các cách viết tắt của router.replace() và tự động đặt preserveScroll cùng preserveState thành true.
Cả ba phương thức đều hỗ trợ dot notation cho prop lồng nhau và có thể nhận callback function, trong đó đối số đầu tiên là giá trị hiện tại và đối số thứ hai là props của trang hiện tại.

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 page, Inertia mô phỏng hành vi mặc định của trình duyệt bằng cách tự động reset vị trí cuộn của document body (cũng như các scroll region đã định nghĩa) về đầ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 true.
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 về tính năng này, xem tài liệu scroll management.

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 về tính năng này, xem tài liệu partial reloads.

View Transition

Bạn có thể bật View transitions cho một visit bằng cách đặt tùy chọn viewTransition thành true. Cơ chế này dùng View Transitions API của trình duyệt để animate quá trình chuyển trang.

Hủy lần truy cập

Bạn có thể hủy toàn bộ visit đang chạy bằng phương thức router.cancelAll(). Mặc định, thao tác này hủy mọi request đồng bộ, bất đồng bộ và prefetch.
Bạn có thể hủy chọn lọc từng loại request bằng cách truyền options object.

Cancel token

Để kiểm soát chi tiết hơn, bạn có thể hủy từng visit bằng cancel token. Inertia tự động tạo cancel token và cung cấp nó qua callback onCancelToken() trước khi thực hiện visit.
Các event callback onCancel()onFinish() sẽ được thực thi khi visit bị hủy.

Callback sự kiện

Ngoài global events của Inertia, Inertia còn cung cấp nhiều event callback theo từng visit.
Trả false từ callback onBefore() sẽ hủy visit. Trả false từ onHttpException() hoặc onNetworkError() sẽ ngăn global event tương ứng được phát và ngăn hành vi mặc định của nó.
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 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.