UNPKG

@tanstack/react-query

Version:

Hooks for managing, caching and syncing asynchronous and remote data in React

69 lines (65 loc) 1.6 kB
'use client' import * as React from 'react' import { shouldThrowError } from './utils' import type { DefaultedQueryObserverOptions, Query, QueryKey, QueryObserverResult, ThrowOnError, } from '@tanstack/query-core' import type { QueryErrorResetBoundaryValue } from './QueryErrorResetBoundary' export const ensurePreventErrorBoundaryRetry = < TQueryFnData, TError, TData, TQueryData, TQueryKey extends QueryKey, >( options: DefaultedQueryObserverOptions< TQueryFnData, TError, TData, TQueryData, TQueryKey >, errorResetBoundary: QueryErrorResetBoundaryValue, ) => { if (options.suspense || options.throwOnError) { // Prevent retrying failed query if the error boundary has not been reset yet if (!errorResetBoundary.isReset()) { options.retryOnMount = false } } } export const useClearResetErrorBoundary = ( errorResetBoundary: QueryErrorResetBoundaryValue, ) => { React.useEffect(() => { errorResetBoundary.clearReset() }, [errorResetBoundary]) } export const getHasError = < TData, TError, TQueryFnData, TQueryData, TQueryKey extends QueryKey, >({ result, errorResetBoundary, throwOnError, query, }: { result: QueryObserverResult<TData, TError> errorResetBoundary: QueryErrorResetBoundaryValue throwOnError: ThrowOnError<TQueryFnData, TError, TQueryData, TQueryKey> query: Query<TQueryFnData, TError, TQueryData, TQueryKey> }) => { return ( result.isError && !errorResetBoundary.isReset() && !result.isFetching && shouldThrowError(throwOnError, [result.error, query]) ) }