useMutation()
useMutation() là gì?
useMutation()
là một hook phục vụ cho việc gửi yêu cầu POST, PUT, DELETE dữ liệu lên trên server
Cú pháp của useMutation()
Các thuộc tính, phương thức trả về từ useMutation()
status
loading
: nếu mutation đang thực thi
success
: nếu mutation thực thi thành công
error
: nếu mutation thực thi thất bại
data
Trả về dữ liệu nhân được về từ server sau khi mutation thực thi thành công
error
Trả về lỗi mà server phản hồi khi mutation thực thi thất bại
mutate()
Dùng để trigger request (POST, PUT, DELETE): Cú pháp: mutate(variables, { onSuccess: (data) => {}, onError: (error) => {} });
variables
: parameter để truyền vào mutation function (đây có thể là dữ liệu phần body của request). Nếu có nhiều parameter muốn truyền vào mutation function, phải gói lại trong một object vì đây là biến đơndata
: dữ liệu nhận được từ server sau khi mutation thực thi thành công, nó chính là thuộc tínhdata
trả về từuseMutation()
error
: lỗi mà server trả về sau khi mutation thực thi thất bại, nó chính là thuộc tínherror
trả về từuseMutation()
mutateAsync()
Cấu hình giống như mutate()
. Chỉ khác mutate()
trả về kiểu void nên không thể dùng await
, còn mutateAsync()
trả về một Promise nên có thể sử dụng kèm với từ khóa await
để chờ đợi mutation thực thi xong
Cấu hình cho useMutation()
mutationFn
Function
Nhận vào một function return Promise
để thực hiện việc gửi request lên server
onSuccess
Function
Nhận vào một function có parameter là data
: onSuccess: (data) => {}
Parameter
data
cũng chính là thuộc tínhdata
được trả về từuseMutation()
Hàm được gọi ngay sau khi mutation thực thi thành công.
Hàm này trả về
Promise
nên có thể đi kèm vớiawait
onError
Function
Là một function nhận error
(có thể là AxiosError
) làm parameter:
onError: (error) => {}
Parameter
error
cũng chính là thuộc tínherror
được trả về từuseMutation()
.Hàm sẽ chạy ngay sau khi có lỗi phát sinh trong khi mutation thực thi.
Hàm này trả về
Promise
nên có thể đi kèm vớiawait
retry
Number
Mutation sẽ thực thi lại tối đa số lần ta chỉ định nếu server phản hồi lỗi. Sau số lần retry này nếu server vẫn phản hồi lại lỗi thì lúc đó mới thực sự gửi lỗi về client
Ví dụ về useMutation():
🆘🆘🆘Lưu ý:
Nếu ta truyền trực tiếp đối tượng function vào
mutationFn
thì function đó chỉ nhận MỘT parameter duy nhất và đối số được truyền cho parameter duy nhất đó chính là giá trị củavariables
ở phương thứcmutate()
. Ví dụ:
Nếu muốn đối tượng function của
mutationFn
có từ hai parameter trở lên (như phương thức PUT cầnid
vàbody
), thì ta phải truyền function đó dưới dạng callback. Lúc này chovariables
ở phương thứcmutate()
bằngundefined
. Ví dụ:
Last updated