🔥 필터
337자
4분
TanStack Query에서는 일부 메서드가 QueryFilters 또는 MutationFilters 객체를 받아들입니다. 이 필터들을 사용하면 쿼리나 뮤테이션을 세밀하게 제어할 수 있습니다.
쿼리 필터
쿼리 필터는 특정 조건을 가진 객체로, 이를 통해 원하는 쿼리를 찾을 수 있습니다. 다음과 같은 예제를 살펴보겠습니다:
// 모든 쿼리 취소 await queryClient.cancelQueries() // 키가 'posts'로 시작하는 비활성 쿼리 모두 제거 queryClient.removeQueries({ queryKey: ['posts'], type: 'inactive' }) // 활성 상태인 모든 쿼리 다시 가져오기 await queryClient.refetchQueries({ type: 'active' }) // 키가 'posts'로 시작하는 활성 쿼리 모두 다시 가져오기 await queryClient.refetchQueries({ queryKey: ['posts'], type: 'active' })
typescript
쿼리 필터 객체는 다음과 같은 속성을 지원합니다:
queryKey?: QueryKey
: 일치시킬 쿼리 키를 정의합니다.exact?: boolean
: true로 설정하면 정확히 일치하는 쿼리 키만 반환합니다.type?: 'active' | 'inactive' | 'all'
: 기본값은 'all'입니다. 'active'는 활성 쿼리, 'inactive'는 비활성 쿼리와 일치시킵니다.stale?: boolean
: true면 오래된 쿼리, false면 최신 쿼리와 일치시킵니다.fetchStatus?: FetchStatus
: 'fetching'은 현재 가져오는 중인 쿼리, 'paused'는 일시 중지된 쿼리, 'idle'은 가져오지 않는 쿼리와 일치시킵니다.predicate?: (query: Query) => boolean
: 최종 필터 함수로, 모든 일치하는 쿼리에 적용됩니다.
뮤테이션 필터
뮤테이션 필터는 특정 조건을 가진 객체로, 이를 통해 원하는 뮤테이션을 찾을 수 있습니다. 다음과 같은 예제를 살펴보겠습니다:
// 현재 실행 중인 모든 뮤테이션 수 가져오기 await queryClient.isMutating() // 뮤테이션 키로 필터링 await queryClient.isMutating({ mutationKey: ['post'] }) // 조건 함수로 뮤테이션 필터링 await queryClient.isMutating({ predicate: (mutation) => mutation.options.variables?.id === 1, })
typescript
뮤테이션 필터 객체는 다음과 같은 속성을 지원합니다:
mutationKey?: MutationKey
: 일치시킬 뮤테이션 키를 정의합니다.exact?: boolean
: true로 설정하면 정확히 일치하는 뮤테이션 키만 반환합니다.status?: MutationStatus
: 뮤테이션의 상태에 따라 필터링합니다.predicate?: (mutation: Mutation) => boolean
: 최종 필터 함수로, 모든 일치하는 뮤테이션에 적용됩니다.
유틸리티 함수
matchQuery
const isMatching = matchQuery(filters, query)
typescript
이 함수는 주어진 쿼리 필터와 쿼리가 일치하는지 여부를 불리언 값으로 반환합니다.
matchMutation
const isMatching = matchMutation(filters, mutation)
typescript
이 함수는 주어진 뮤테이션 필터와 뮤테이션이 일치하는지 여부를 불리언 값으로 반환합니다.
이러한 필터와 유틸리티 함수들을 활용하면 TanStack Query에서 쿼리와 뮤테이션을 더욱 정교하게 관리할 수 있습니다. 개발자는 이를 통해 애플리케이션의 데이터 흐름을 효과적으로 제어하고 최적화할 수 있습니다.