🔥 쿼리 옵션

200자
3분

쿼리 키와 쿼리 함수를 여러 곳에서 공유하면서도 서로 가까이 배치하는 가장 좋은 방법 중 하나는 queryOptions 도우미를 사용하는 것입니다. 실행 시에 이 도우미는 여러분이 전달한 내용을 그대로 반환하지만, TypeScript와 함께 사용할 때 많은 장점을 제공합니다. 한 곳에서 쿼리에 대한 모든 가능한 옵션을 정의할 수 있으며, 모든 옵션에 대해 타입 추론과 타입 안전성을 얻을 수 있습니다.

typescript
import { queryOptions } from '@tanstack/react-query'
 
function groupOptions(id: number) {
  return queryOptions({
    queryKey: ['groups', id],
    queryFn: () => fetchGroups(id),
    staleTime: 5 * 1000,
  })
}
 
// 사용 예:
 
useQuery(groupOptions(1))
useSuspenseQuery(groupOptions(5))
useQueries({
  queries: [groupOptions(1), groupOptions(2)],
})
queryClient.prefetchQuery(groupOptions(23))
queryClient.setQueryData(groupOptions(42).queryKey, newGroups)
 
typescript
import { queryOptions } from '@tanstack/react-query'
 
function groupOptions(id: number) {
  return queryOptions({
    queryKey: ['groups', id],
    queryFn: () => fetchGroups(id),
    staleTime: 5 * 1000,
  })
}
 
// 사용 예:
 
useQuery(groupOptions(1))
useSuspenseQuery(groupOptions(5))
useQueries({
  queries: [groupOptions(1), groupOptions(2)],
})
queryClient.prefetchQuery(groupOptions(23))
queryClient.setQueryData(groupOptions(42).queryKey, newGroups)
 

이 코드는 groupOptions 함수를 정의하고 있습니다. 이 함수는 쿼리 옵션을 생성하며, 다양한 쿼리 관련 함수에서 사용할 수 있습니다. 함수는 ID를 인자로 받아 해당 ID에 대한 그룹을 가져오는 쿼리를 설정합니다.

useQuery, useSuspenseQuery, useQueries와 같은 훅에서 이 옵션을 사용할 수 있으며, queryClient의 메서드에서도 활용할 수 있습니다. 이렇게 하면 쿼리 설정을 한 곳에서 관리하면서 여러 곳에서 일관되게 사용할 수 있습니다.

무한 쿼리의 경우, 별도의 infiniteQueryOptions 도우미를 사용할 수 있습니다. 이 도우미는 무한 스크롤과 같은 특수한 쿼리 상황에 맞춰 설계되었습니다.

이러한 접근 방식은 코드의 재사용성을 높이고, 타입 안전성을 제공하며, 쿼리 관련 로직을 중앙화하여 관리할 수 있게 해줍니다. 결과적으로 더 깔끔하고 유지보수하기 쉬운 코드를 작성할 수 있게 됩니다.

YouTube 영상

채널 보기
투영과 예측, 그리고 선형 결합 | 선형대수학
행렬의 가장 중요한 연산 - 행렬 곱셈 | 선형대수학
내적의 기하학적 의미와 코사인 유사도 원리 | 선형대수학
벡터의 정의와 덧셈 연산 | 선형대수학
스칼라 곱셈과 내적의 기하학적 의미 | 선형대수학
인공지능은 세상을 어떻게 숫자로 읽는가? - 이미지, 소리 그리고 텍스트가 행렬이 되는 원리 | 선형대수학
AI는 왜 수백 차원의 벡터를 사용할까? 고차원 공간과 행렬 | 선형대수학
AI를 위한 선형대수학 - 소개 | 선형대수학