기본적으로 TanStack Query는 공격적이지만 정상적인 기본값으로 구성됩니다. 때로는 이러한 기본값이 신규 사용자를 당황하게 하거나 사용자가 알지 못하는 경우 학습/디버깅을 어렵게 만들 수 있습니다. TanStack Query를 계속 학습하고 사용하면서 이러한 기본값을 염두에 두시기 바랍니다:
useQuery
, useInfiniteQuery
를 통한 쿼리 인스턴스는 기본적으로 캐시된 데이터를 오래된 데이터로 간주합니다."이 동작을 변경하려면
staleTime
옵션을 사용하여 전역 및 쿼리별로 쿼리를 구성할 수 있습니다.staleTime
을 길게 지정하면 쿼리가 데이터를 자주 다시 가져오지 않습니다."
예상치 못한 refetch가 표시되는 경우, 방금 창에 focused 되었고 TanStack 쿼리가 refetchOnWindowFocus
를 수행 중이기 때문일 수 있습니다. 개발 중에는 특히 브라우저 개발자 도구와 앱 사이에 포커스를 맞추는 경우에도 리페치가 발생하기 때문에 더 자주 트리거될 수 있으므로 주의해야 합니다.
"이 기능을 변경하려면
refetchOnMount
,refetchOnWindowFocus
,refetchOnReconnect
,refetchInterval
과 같은 옵션을 사용할 수 있습니다."
useQuery
, useInfiniteQuery
또는 query observers 활성 인스턴스가 더 이상 없는 쿼리 결과는 "inactive"로 레이블이 지정되며 나중에 다시 사용될 경우를 대비하여 캐시에 남아 있습니다."이를 변경하려면 쿼리에 대한 기본
cacheTime
을1000 * 60 *5
밀리초가 아닌 다른 값으로 변경하면 됩니다."
"구조적 공유(structural sharing)는 JSON-compatible 값에서만 작동하며, 다른 값 타입은 항상 변경된 것으로 간주됩니다. 예를 들어 대용량 응답으로 인해 성능 문제가 발생하는 경우
config.structuralSharing
플래그를 사용하여 이 기능을 비활성화할 수 있습니다. 쿼리 응답에서 JSON과 호환되지 않는 값을 처리하면서도 데이터가 변경되었는지 여부를 감지하려는 경우config.isDataEqual
로 데이터 비교 함수를 정의하거나, 필요에 따라 참조를 유지하면서 이전 응답과 새 응답의 값을 계산하는 사용자 정의 함수를config.structuralSharing
으로 제공할 수 있습니다."
기본값에 대한 자세한 설명은 커뮤니티 리소스에서 다음 문서를 참조하세요:
Reference