Skip to main content
Không phải request nào cũng cần kích hoạt Inertia page visit. Với request tới API bên ngoài hoặc lấy dữ liệu từ endpoint không phải Inertia, hook useHttp cung cấp trải nghiệm phát triển tương tự useForm nhưng dành cho HTTP request độc lập.

Cách dùng cơ bản

Hook useHttp nhận dữ liệu ban đầu và trả về reactive state cùng các phương thức gửi HTTP request.
Khác router visit, request useHttp không kích hoạt page navigation hay tương tác với page lifecycle của Inertia. Đây là HTTP request thông thường trả JSON response.

Gửi dữ liệu

Hook cung cấp các phương thức tiện ích get, post, put, patchdelete. Ngoài ra còn có phương thức submit tổng quát cho HTTP method động.
Mỗi phương thức trả một Promise resolve với dữ liệu JSON response đã parse. Người dùng TypeScript có thể khai báo type cho request data và response.

Bind endpoint trước

Bạn có thể truyền HTTP method và URL làm hai đối số đầu của useHttp(), sau đó gọi submit() không cần đối số để gửi request. Cách này cũng mở khóa validation thời gian thực. Xem Precognition để biết chi tiết.

Nhiều request

Mỗi instance useHttp theo dõi processing, errors và reactive state riêng. Khi gửi các request độc lập, bạn có thể tạo instance riêng cho từng request để state không xung đột.

Reactive state

Hook useHttp cung cấp các reactive property tương tự useForm:

Lỗi validation

Khi request trả status code 422, hook tự động parse validation error và cung cấp chúng qua thuộc tính errors.

Hiển thị tất cả lỗi

Mặc định, validation error được rút gọn còn message đầu tiên cho mỗi field. Bạn có thể nối withAllErrors() để nhận toàn bộ error message dưới dạng mảng, hữu ích với field có nhiều validation rule.
Phương thức tương tự cũng có trên helper useForm và component <Form>.

Tải file lên

Khi dữ liệu có file, hook tự động gửi request dưới dạng multipart/form-data. Tiến trình upload có sẵn qua thuộc tính progress.

Hủy request

Bạn có thể hủy request đang chạy bằng phương thức cancel().

Optimistic updates

Hook useHttp hỗ trợ optimistic update qua phương thức optimistic(). Callback nhận dữ liệu hiện tại và nên trả về partial update để áp dụng ngay.
Update được áp dụng đồng bộ. Nếu request thất bại, dữ liệu được rollback về state trước đó.

Callback sự kiện

Mỗi phương thức submit nhận options object với các lifecycle callback:
Bạn có thể trả false từ onBefore để hủy request.

Truy cập HTTP response

Callback onSuccess nhận dữ liệu response đã parse làm đối số đầu và HTTP response object làm đối số thứ hai. Response object chứa status, dataheaders, hữu ích khi cần kiểm tra status code hoặc response header.

HTTP exception

Callback onHttpException chạy khi server trả HTTP error không phải 422, chẳng hạn 500 hoặc 403. Callback nhận HTTP response object, cho phép truy cập status code, response body và header.

Network error

Callback onNetworkError chạy khi request thất bại do vấn đề mạng, chẳng hạn người dùng mất kết nối Internet. Callback nhận object Error.

Precognition

Hook useHttp hỗ trợ Laravel Precognition cho validation thời gian thực. Bật tính năng bằng cách nối withPrecognition() với HTTP method và validation endpoint.
Sau khi bật, các phương thức validate(), touch(), touched(), valid()invalid() trở nên khả dụng và hoạt động giống form precognition.

History state

Bạn có thể lưu dữ liệu và lỗi vào browser history state bằng cách truyền remember key làm đối số đầu tiên.
Bạn có thể loại các field nhạy cảm khỏi history state bằng phương thức dontRemember().

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.