Si observa la guía, el argumento UseMutation Hook está estructurado de esta manera.
const { data, error, isError, isIdle, isLoading, isPaused, isSuccess, mutate, mutateAsync, reset, status, } = useMutation(mutationFn, { cacheTime, mutationKey, networkMode, onError, onMutate, onSettled, onSuccess, retry, retryDelay, useErrorBoundary, meta })La función axios asíncrona está estructurada así:
async function setSupplierRegister( basic: Basic, operator: Operator, delivery: Delivery, bank: Bank ): Promise<void> { await axiosInstance.post("/register", { basic: basic, operator: operator, delivery: delivery, bank: bank, }); }La función asincrónica requiere 4 argumentos, pero solo se puede recuperar 1 valor de datos en el argumento useMutation Hook. Por lo tanto, si declara 4 argumentos para useMutation, se produce un error.
export function useRegister(): UseMutateFunction< void, unknown, any, unknown > { const { mutate } = useMutation( // (basic: Basic, operator: Operator, delivery: Delivery, bank: Bank) => setSupplierRegister(basic, operator, delivery, bank), error (data: any) => setSupplierRegister(data), ); return mutate; }¿Cómo debo manejarlo para declarar 4 argumentos en la función useMutation?
Puede agregar argumentos en la matriz, por ejemplo:
export function useRegister(): UseMutateFunction< void, unknown, any, unknown > { const { mutate } = useMutation( // (basic: Basic, operator: Operator, delivery: Delivery, bank: Bank) => setSupplierRegister(basic, operator, delivery, bank), error ([basic: Basic, operator: Operator, delivery: Delivery, bank: Bank]) => setSupplierRegister(basic, operator, delivery, bank), ); return mutate; }y luego llamar a mutar:
mutate([basic, operator, delivery, bank]) La segunda opción es usar un objeto, pero deberá refactorizar la función setSupplierRegister :
async function setSupplierRegister(data): Promise<void> { await axiosInstance.post("/register", { data }); } puede dejar useMutation como está, y llamar a mutate así:
mutate({ basic, operator, delivery, bank })En mi opinión, el segundo enfoque es mucho más limpio y legible.