Доки по разработке
This project is maintained by teniryte
React Query Devtools должны быть включены почти в каждом проекте на этапе разработки. Это самый быстрый способ понять:
import { ReactQueryDevtools } from '@tanstack/react-query-devtools'
<QueryClientProvider client={queryClient}>
<App />
{import.meta.env.DEV ? <ReactQueryDevtools initialIsOpen={false} /> : null}
</QueryClientProvider>
queryKeystatusfetchStatusdataUpdatedAtЕсли у вас странное поведение, Devtools почти всегда показывают, проблема в:
staleTimeenabledqueryKey с тем, что вы ожидаете.staleTime: 0.refetchOnWindowFocus.useIsFetching и useIsMutatingconst globalFetching = useIsFetching()
const globalMutating = useIsMutating()
Это хороший способ быстро понять, реально ли приложение “занято”, или проблема только в одном локальном компоненте.
const unsubscribe = queryClient.getQueryCache().subscribe((event) => {
if (event?.type === 'updated') {
console.debug('Query updated', event.query.queryKey)
}
})
Это полезно для:
Сначала проверьте:
select на каждом рендереTanStack Query по умолчанию оптимизирует tracked properties, но это легко испортить неудачным паттерном кода.
Если Devtools показывают мало query updates, а компонент всё равно часто ререндерится, проблема, скорее всего, не в TanStack Query, а в родительском React-дереве.
staleTime: 0 плюс focus/mount triggers.enabled: false или слишком узкая инвалидация.placeholderData.getNextPageParam или merge-логике.dataUpdatedAt при жалобах на устаревшие данные.