mutoid
Version:
Reactive library for data fetching, caching, state management
16 lines (15 loc) • 679 B
JavaScript
import { useCallback, useEffect, useRef } from 'react';
import * as MS from '../state';
import { useSubscriptionRef } from './useSubscriptionRef';
export function useMutation(s, mutationL, options) {
const [subscriptionRef, subscriptionUnsubscribe] = useSubscriptionRef();
const optionsRef = useRef(options);
useEffect(() => {
optionsRef.current = options;
}, [options]);
return useCallback((...payload) => {
subscriptionUnsubscribe();
subscriptionRef.current = MS.mutationRunner(s, mutationL, optionsRef.current)(...payload);
return subscriptionRef.current;
}, [s, mutationL, subscriptionRef, subscriptionUnsubscribe]);
}