UNPKG

synapse-storage

Version:

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

36 lines (35 loc) 2.03 kB
import type { Endpoint, RequestStatus } from '../../api/types/endpoint.interface'; import type { QueryOptions, QueryResult } from '../../api/types/query.interface'; export interface UseApiMutationResult<TParams, TData> { /** Запустить мутацию (ошибки не пробрасываются — смотри `error`/`isError`) */ mutate: (params: TParams) => void; /** Запустить мутацию и дождаться результата (ошибки пробрасываются) */ mutateAsync: (params: TParams) => Promise<QueryResult<TData, Error>>; /** Данные успешного ответа */ data: TData | undefined; /** Ошибка мутации */ error: Error | undefined; /** Текущий статус */ status: RequestStatus; /** Мутация выполняется */ isLoading: boolean; /** Мутация завершилась ошибкой */ isError: boolean; /** Мутация завершилась успехом */ isSuccess: boolean; /** Сбросить состояние к idle */ reset: () => void; } /** * Хук для выполнения мутаций (POST/PUT/DELETE/PATCH) через эндпоинт ApiClient. * * В отличие от {@link useApiQuery}, запрос не стартует автоматически — его * запускает `mutate`/`mutateAsync`. Мутации не кэшируются (по REST-методу), а их * `invalidatesTags` инвалидируют кэш — активные `useApiQuery` соседних эндпоинтов * автоматически перезапросятся через шину инвалидации. * * @example * const { mutate, isLoading } = useApiMutation(endpoints.createUser) * mutate({ name: 'Alex' }) */ export declare function useApiMutation<TParams extends Record<string, any>, TData>(endpoint: Endpoint<TParams, TData>, options?: QueryOptions): UseApiMutationResult<TParams, TData>;