useMutation<TData, TError, TVariables> function

MutationResult<TData, TError, TVariables> useMutation<TData, TError, TVariables>(
  1. Future<TData> mutationFn(
    1. TVariables
    ), {
  2. void onSuccess(
    1. TData,
    2. TVariables
    )?,
  3. void onError(
    1. TError,
    2. TVariables
    )?,
})

A hook to use a mutation.

Implementation

MutationResult<TData, TError, TVariables>
    useMutation<TData, TError, TVariables>(
  Future<TData> Function(TVariables) mutationFn, {
  void Function(TData, TVariables)? onSuccess,
  void Function(TError, TVariables)? onError,
}) {
  final controller = useMemoized(
    () => MutationController<TData, TError, TVariables>(
      mutationFn: mutationFn,
      onSuccess: onSuccess,
      onError: onError,
    ),
  );

  final state = useValueListenable(controller);

  useEffect(() => controller.dispose, [controller]);

  return MutationResult(state, controller.mutate);
}