UNPKG

@preact-signals/query

Version:

A reactive utility for React/Preact that simplifies the handling of data fetching and state management. Powered by Preact Signals, it provides hooks and functions to create reactive resources and manage their state seamlessly.

37 lines (32 loc) 1.18 kB
'use client' import * as React from 'react' import type { QueryKey, QueryFilters } from '@tanstack/query-core' import { notifyManager, parseFilterArgs } from '@tanstack/query-core' import { useSyncExternalStore } from './useSyncExternalStore.ts' import type { ContextOptions } from './types.ts' import { useQueryClient } from './QueryClientProvider.tsx' interface Options extends ContextOptions {} export function useIsFetching(filters?: QueryFilters, options?: Options): number export function useIsFetching( queryKey?: QueryKey, filters?: QueryFilters, options?: Options, ): number export function useIsFetching( arg1?: QueryKey | QueryFilters, arg2?: QueryFilters | Options, arg3?: Options, ): number { const [filters, options = {}] = parseFilterArgs(arg1, arg2, arg3) const queryClient = useQueryClient({ context: options.context }) const queryCache = queryClient.getQueryCache() return useSyncExternalStore( React.useCallback( (onStoreChange) => queryCache.subscribe(notifyManager.batchCalls(onStoreChange)), [queryCache], ), () => queryClient.isFetching(filters), () => queryClient.isFetching(filters), ) }