Apollo-style mutation hook — idle until mutate() is called.
Returns { data, loading, failure, mutate, reset, cancel, called }.
mutate() never rejects — it resolves with the parsed response body on
success, or undefined on any failure. failure narrows on kind:
'transport' (no response exists — abort, timeout, connection lost)
carries error: FetchError; 'http' (server answered outside 2xx)
carries response, the resolved ok-false FetchResponse.
const { mutate, loading, failure } = useMutation<User>(api, 'post', '/users', {
emitOnSuccess: 'users.created',
}, observer);
const user = await mutate({ name: 'Alice' });
if (!user) {
if (failure?.kind === 'http') console.error(failure.response.status);
if (failure?.kind === 'transport') console.error(failure.error.message);
return;
}
Apollo-style mutation hook — idle until
mutate()is called. Returns{ data, loading, failure, mutate, reset, cancel, called }.mutate()never rejects — it resolves with the parsed response body on success, orundefinedon any failure.failurenarrows onkind:'transport'(no response exists — abort, timeout, connection lost) carrieserror: FetchError;'http'(server answered outside 2xx) carriesresponse, the resolved ok-falseFetchResponse.