UNPKG

@shopify/react-graphql

Version:

Tools for creating type-safe and asynchronous GraphQL components for React

46 lines (43 loc) 1.26 kB
import { useCallback } from 'react'; import useApolloClient from './apollo-client.mjs'; function useMutation(mutation, options = {}) { const { client: overrideClient, variables, optimisticResponse, refetchQueries, awaitRefetchQueries, update, context, fetchPolicy, errorPolicy } = options; const client = useApolloClient(overrideClient); const runMutation = useCallback((perMutationOptions = {}) => { const mutateVariables = { ...(variables || {}), ...(perMutationOptions.variables || {}) }; delete perMutationOptions.variables; return client.mutate({ mutation, variables: mutateVariables, optimisticResponse, refetchQueries, awaitRefetchQueries, update, context, fetchPolicy, errorPolicy, ...perMutationOptions }); }, // eslint-disable-next-line react-hooks/exhaustive-deps [client, mutation, refetchQueries, awaitRefetchQueries, update, context, fetchPolicy, errorPolicy, // eslint-disable-next-line react-hooks/exhaustive-deps JSON.stringify(variables), // eslint-disable-next-line react-hooks/exhaustive-deps JSON.stringify(optimisticResponse)]); return runMutation; } export { useMutation as default };