use{Service}{Action}.mutation.ts
import { MutationOptions, useMutation } from '@tanstack/react-query';
import { PayloadType } from '@/types/api';
type Params = {
anything: any
payload: PayloadType;
};
/**
* @example:
* serviceAction
*/
export const serviceAction = async (
params: Params
): Promise<string> => {
const response = await fetch(`endpoint`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify(params.payload),
})
return response.json() as Promise<any>;
};
/**
* @example:
* useServiceActionMutation
*/
const useServiceActionMutation = (
options?: MutationOptions<string, Error, Params, unknown>
) => {
return useMutation((params: Params) => serviceAction(params), {
...options,
});
};
export default useServiceActionMutation;