useMutation<R> function
Mutation<R>
useMutation<R>({
- MutationKey<
R> ? key, - String? keyOf,
- MutationInitialDataCallback<
R> ? initialData, - MutationMutateCallback<
R> ? initialMutate, - MutationOnUpdateDataCallback<
R> ? onUpdateData, - MutationOnUpdateErrorCallback? onUpdateError,
- MutationOnUpdateInitializedCallback? onUpdateInitialized,
- MutationOnUpdateLoadingCallback? onUpdateLoading,
- MutationOnOpenCallback<
R> ? onOpen, - MutationOnCloseCallback<
R> ? onClose, - List<
MutationKey< observeKeys = const [],R> >
Implementation
Mutation<R> useMutation<R>(
{MutationKey<R>? key,
String? keyOf,
MutationInitialDataCallback<R>? initialData,
MutationMutateCallback<R>? initialMutate,
MutationOnUpdateDataCallback<R>? onUpdateData,
MutationOnUpdateErrorCallback? onUpdateError,
MutationOnUpdateInitializedCallback? onUpdateInitialized,
MutationOnUpdateLoadingCallback? onUpdateLoading,
MutationOnOpenCallback<R>? onOpen,
MutationOnCloseCallback<R>? onClose,
List<MutationKey<R>> observeKeys = const []}) {
final mutationKey = useMutationKey(of: keyOf, key: key);
final mutation = useMemoized(() {
final m = MutationCache.instance.retain<R>(mutationKey,
initialData: initialData,
initialMutate: initialMutate,
onUpdateData: onUpdateData,
onUpdateError: onUpdateError,
onUpdateInitialized: onUpdateInitialized,
onUpdateLoading: onUpdateLoading,
onOpen: onOpen,
onClose: onClose,
observeKeys: observeKeys);
mutationKey.setMutation(m);
return m;
}, [mutationKey]);
useEffect(() {
if (mutation.isInitilized) {
return null;
}
if (initialMutate == null) {
return null;
}
Future.delayed(Duration.zero, () {
mutation.updateInitialMutate(initialMutate);
});
return null;
}, [mutation, initialMutate]);
useEffect(() {
return () {
MutationCache.instance.release(mutationKey);
};
}, [mutation]);
return mutation;
}