UNPKG

synapse-storage

Version:

Набор инструментов для управления состоянием и апи-запросами

43 lines (42 loc) 2.41 kB
import type { Endpoint, RequestStatus } from '../../api/types/endpoint.interface'; import type { QueryOptions } from '../../api/types/query.interface'; export interface UseApiQueryOptions extends QueryOptions { /** Если `false` — запрос не выполняется (lazy). По умолчанию `true`. */ enabled?: boolean; /** * Авто-рефетч активного запроса при инвалидации кэша по тегам эндпоинта * (после мутаций соседних эндпоинтов с `invalidatesTags`). По умолчанию `true`. */ refetchOnInvalidate?: boolean; } export interface UseApiQueryResult<TData> { /** Данные ответа (или из кэша) */ data: TData | undefined; /** Ошибка запроса */ error: Error | undefined; /** Текущий статус запроса */ status: RequestStatus; /** Идёт загрузка */ isLoading: boolean; /** Запрос завершился ошибкой */ isError: boolean; /** Запрос завершился успехом */ isSuccess: boolean; /** Данные пришли из кэша (а не из сети) */ fromCache: boolean; /** Принудительно перезапросить (минуя кэш-«свежесть» через новый request) */ refetch: () => void; } /** * Хук для выполнения GET-запросов через эндпоинт ApiClient в стиле React Query. * * Тонкая обёртка над `endpoint.request(params).subscribe(...)`: дедупликация, * кэш по тегам, отмена и retry уже реализованы в самом эндпоинте. Хук добавляет * React-слой: подписку, стабильный ключ параметров, `enabled`/`refetch`, * SSR-fast-path (синхронное чтение кэша на первом рендере без вспышки loading) * и авто-рефетч при инвалидации кэша. * * @example * const { data, isLoading, error, refetch } = useApiQuery(endpoints.getUser, { id }) */ export declare function useApiQuery<TParams extends Record<string, any>, TData>(endpoint: Endpoint<TParams, TData>, params: TParams, options?: UseApiQueryOptions): UseApiQueryResult<TData>;