function useMutationState<TResult, TMutation>(options, queryClient?): Accessor<TResult[]>;Defined in: useMutationState.ts:124
useMutationState is a hook that gives you access to all mutations in the MutationCache. You can pass filters (MutationFilters) to narrow down your mutations, and select to transform the mutation state.
TResult = MutationState<unknown, Error, unknown, unknown>
TMutation extends Mutation<any, any, any, any> = MutationTypeFromResult<TResult>
Accessor<MutationStateOptions<TResult, TMutation>> = ...
An accessor returning the filters to narrow down matched mutations, and an optional select to transform the mutation state.
Accessor<QueryClient>
An accessor for a custom QueryClient. Otherwise, the one from the nearest context will be used.
Accessor<TResult[]>
An accessor for an array of whatever select returns for each matching mutation.
Get all variables of all running mutations:
import { useMutationState } from '@tanstack/solid-query'
function PendingPosts() {
const pendingVariables = useMutationState(() => ({
filters: { status: 'pending' },
select: (mutation) => mutation.state.variables,
}))
return <>{pendingVariables().length} posts saving...</>
}Get all data for specific mutations via the mutationKey:
import { useMutation, useMutationState } from '@tanstack/solid-query'
const mutationKey = ['posts']
function Posts() {
// Some mutation that we want to get the state for
const createPostsMutation = useMutation(() => ({
mutationKey,
mutationFn: createPosts,
}))
const savedPosts = useMutationState(() => ({
// this mutation key needs to match the mutation key of the given mutation (see above)
filters: { mutationKey, status: 'success' },
select: (mutation) => mutation.state.data,
}))
return (
<button onClick={() => createPostsMutation.mutate(['New Post'])}>
Create post ({savedPosts().length} saved so far)
</button>
)
}Access the latest successful mutation data via the mutationKey. Each invocation of mutate adds a new entry to the mutation cache for gcTime milliseconds — with the status: 'success' filter below, check the last item that useMutationState returns to get the latest successful invocation:
import { useMutationState } from '@tanstack/solid-query'
function LatestPost() {
const savedPosts = useMutationState(() => ({
filters: { mutationKey: ['posts'], status: 'success' },
select: (mutation) => mutation.state.data,
}))
const latestPost = () => savedPosts()[savedPosts().length - 1]
return <span>{latestPost()?.title}</span>
}