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()
const myMutation = useMutation({
/* Cấu hình cho 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ínhdatatrả 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ínherrortrả 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
datacũ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ề
Promisenê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
errorcũ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ề
Promisenê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
mutationFnthì 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
mutationFncó từ hai parameter trở lên (như phương thức PUT cầnidvà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