Files
upstream-mirror 3a013ccdfe
Some checks failed
autofix.ci / autofix (push) Failing after 4s
Release / Release (push) Has been skipped
GitHub Actions Security Analysis / Run zizmor (push) Failing after 2s
snapshot of https://github.com/TanStack/query.git (main, 2026-09-16; blobs > 131072B omitted)
2026-09-16 01:13:08 +05:00

3.1 KiB

id, title, redirect_from
id title redirect_from
useMutationState useMutationState
framework/solid/reference/useMutationState
function useMutationState<TResult, TMutation>(options, queryClient?): Accessor<TResult[]>;

Defined in: packages/solid-query/src/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.

Type Parameters

TResult

TResult = MutationState<unknown, Error, unknown, unknown>

TMutation

TMutation extends Mutation<any, any, any, any> = MutationTypeFromResult<TResult>

Parameters

options

Accessor<MutationStateOptions<TResult, TMutation>> = ...

An accessor returning the filters to narrow down matched mutations, and an optional select to transform the mutation state.

queryClient?

Accessor<QueryClient>

An accessor for a custom QueryClient. Otherwise, the one from the nearest context will be used.

Returns

Accessor<TResult[]>

An accessor for an array of whatever select returns for each matching mutation.

Examples

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>
}