Skip to content

Commit f7b90c2

Browse files
committed
fix(react-query): improve throwOnError logic with query state validation
- Pass query object to ensurePreventErrorBoundaryRetry for accurate state checking - Preserve query deduplication behavior while fixing throwOnError function handling - Fixes issue where throwOnError function couldn't access query error state
1 parent bbc9723 commit f7b90c2

File tree

2 files changed

+13
-5
lines changed

2 files changed

+13
-5
lines changed

packages/react-query/src/useBaseQuery.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,14 @@ export function useBaseQuery<
5353
const errorResetBoundary = useQueryErrorResetBoundary()
5454
const client = useQueryClient(queryClient)
5555
const defaultedOptions = client.defaultQueryOptions(options)
56+
const query = client
57+
.getQueryCache()
58+
.get<
59+
TQueryFnData,
60+
TError,
61+
TQueryData,
62+
TQueryKey
63+
>(defaultedOptions.queryHash)
5664

5765
;(client.getDefaultOptions().queries as any)?._experimental_beforeQuery?.(
5866
defaultedOptions,
@@ -72,8 +80,7 @@ export function useBaseQuery<
7280
: 'optimistic'
7381

7482
ensureSuspenseTimers(defaultedOptions)
75-
ensurePreventErrorBoundaryRetry(defaultedOptions, errorResetBoundary)
76-
83+
ensurePreventErrorBoundaryRetry(defaultedOptions, errorResetBoundary, query)
7784
useClearResetErrorBoundary(errorResetBoundary)
7885

7986
// this needs to be invoked before creating the Observer because that can create a cache entry

packages/react-query/src/useQueries.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -242,9 +242,10 @@ export function useQueries<
242242
[queries, client, isRestoring],
243243
)
244244

245-
defaultedQueries.forEach((query) => {
246-
ensureSuspenseTimers(query)
247-
ensurePreventErrorBoundaryRetry(query, errorResetBoundary)
245+
defaultedQueries.forEach((queryOptions) => {
246+
ensureSuspenseTimers(queryOptions)
247+
const query = client.getQueryCache().get(queryOptions.queryHash)
248+
ensurePreventErrorBoundaryRetry(queryOptions, errorResetBoundary, query)
248249
})
249250

250251
useClearResetErrorBoundary(errorResetBoundary)

0 commit comments

Comments
 (0)