본문으로 건너뛰기

useMutationState

function useMutationState<TResult, TMutation>(options, queryClient?): TResult[];

정의 위치: preact-query/src/useMutationState.ts:157

useMutationStateMutationCache의 모든 뮤테이션에 접근할 수 있게 해주는 훅입니다. 다음을 전달할 수 있습니다 뮤테이션의 범위를 좁히는 filters(MutationFilters)와 뮤테이션을 변환하는 select 상태.

타입 매개변수

TResult

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

TMutation

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

매개변수

옵션

MutationStateOptions<TResult, TMutation> = {}

일치하는 뮤테이션의 범위를 좁히는 filters와, 해당 항목을 변환하는 선택적 select입니다 뮤테이션 상태입니다.

queryClient?

QueryClient

사용자 지정 QueryClient를 사용하려면 이를 사용합니다. 그렇지 않으면 가장 가까운 컨텍스트의 항목이 사용됩니다 사용됩니다.

반환값

TResult[]

일치하는 각 뮤테이션에 대해 select가 반환하는 값으로 구성된 Array입니다.

예시

실행 중인 모든 뮤테이션의 모든 변수를 가져옵니다:

import { useMutationState } from '@tanstack/preact-query'

function PendingPosts() {
const pendingVariables = useMutationState({
filters: { status: 'pending' },
select: (mutation) => mutation.state.variables,
})

return <>{pendingVariables.length} posts saving...</>
}

mutationKey를 통해 특정 뮤테이션의 모든 데이터를 가져옵니다:

import { useMutation, useMutationState } from '@tanstack/preact-query'

const mutationKey = ['posts']

function Posts() {
// Some mutation that we want to get the state for
const mutation = 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={() => mutation.mutate(['New Post'])}>
Create post ({savedPosts.length} saved so far)
</button>
)
}

mutationKey를 통해 최신 뮤테이션 데이터에 접근합니다. mutate를 호출할 때마다 다음에 새 항목이 추가됩니다 gcTime밀리초 동안 뮤테이션 캐시 — useMutationState가 반환하는 마지막 항목을 확인하여 가장 최근 호출:

import { useMutationState } from '@tanstack/preact-query'

function LatestPost() {
const savedPosts = useMutationState({
filters: { mutationKey: ['posts'], status: 'success' },
select: (mutation) => mutation.state.data,
})

const latestSavedPost = savedPosts[savedPosts.length - 1]

return <>{latestSavedPost ? 'Saved' : 'Nothing saved yet'}</>
}