UNPKG

@shopify/react-graphql

Version:

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

39 lines (35 loc) 1.31 kB
import { objectSpread2 as _objectSpread2 } from '../_virtual/_rollupPluginBabelHelpers.js'; import { useCallback } from 'react'; import useApolloClient from './apollo-client.mjs'; 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 = _objectSpread2(_objectSpread2({}, variables || {}), perMutationOptions.variables || {}); delete perMutationOptions.variables; return client.mutate(_objectSpread2({ 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; } export default useMutation;