@shopify/react-graphql
Version:
Tools for creating type-safe and asynchronous GraphQL components for React
43 lines (37 loc) • 1.46 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var _rollupPluginBabelHelpers = require('../_virtual/_rollupPluginBabelHelpers.js');
var React = require('react');
var apolloClient = require('./apollo-client.js');
function useMutation(mutation, options = {}) {
const {
client: overrideClient,
variables,
optimisticResponse,
refetchQueries,
awaitRefetchQueries,
update,
context,
fetchPolicy
} = options;
const client = apolloClient['default'](overrideClient);
const runMutation = React.useCallback((perMutationOptions = {}) => {
const mutateVariables = _rollupPluginBabelHelpers.objectSpread2(_rollupPluginBabelHelpers.objectSpread2({}, variables || {}), perMutationOptions.variables || {});
delete perMutationOptions.variables;
return client.mutate(_rollupPluginBabelHelpers.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;
}
exports.default = useMutation;