useMutation<TData, TVariables> function
UseMutationResult<TData, TVariables>
useMutation<TData, TVariables>(
- Future<
TData> mutationFn(- TVariables variables
- MutationOptions<
TData, TVariables> ? options, - void onSuccess(
- TData data
- void onError(
- Object error
Creates a FASQ Mutation and exposes its state through a hook.
The returned UseMutationResult provides imperative mutate/reset callbacks together with reactive status flags that update as the mutation progresses.
Implementation
UseMutationResult<TData, TVariables> useMutation<TData, TVariables>(
Future<TData> Function(TVariables variables) mutationFn, {
MutationOptions<TData, TVariables>? options,
void Function(TData data)? onSuccess,
void Function(Object error)? onError,
}) {
final state = useState<MutationState<TData>>(const MutationState.idle());
final mutation = useMemoized(
() => Mutation<TData, TVariables>(
mutationFn: mutationFn,
options:
options ??
MutationOptions<TData, TVariables>(
onSuccess: onSuccess,
onError: onError,
),
),
);
useEffect(() {
final subscription = mutation.stream.listen((newState) {
state.value = newState;
});
state.value = mutation.state;
return () {
subscription.cancel();
mutation.dispose();
};
}, [mutation]);
return UseMutationResult(
mutate: mutation.mutate,
reset: mutation.reset,
state: state.value,
);
}