UNPKG

@shopify/react-graphql

Version:

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

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