Skip to content

Commit

Permalink
fix(react-query): make error to be shown when using queryOptions with…
Browse files Browse the repository at this point in the history
… initialData and skipToken in queryFn inside useSuspenseQueries (#8665)

* fix(react-query): make error to be shown when using queryOptions with initialData and skipToken in queryFn inside useSuspenseQueries

* test(react-query): update the test to have a conditional skipToken
  • Loading branch information
gs18004 authored Feb 18, 2025
1 parent 044acae commit 56183f0
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 9 deletions.
18 changes: 18 additions & 0 deletions packages/react-query/src/__tests__/useSuspenseQueries.test-d.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -167,4 +167,22 @@ describe('UseSuspenseQueries config object overload', () => {

expectTypeOf(query1Data).toEqualTypeOf<string>()
})

it('queryOptions with skipToken in queryFn should not work on useSuspenseQueries', () => {
const query1 = queryOptions({
queryKey: ['key1'],
queryFn: Math.random() > 0.5 ? skipToken : () => Promise.resolve(5),
})

const query2 = queryOptions({
queryKey: ['key1'],
queryFn: Math.random() > 0.5 ? skipToken : () => Promise.resolve(5),
initialData: 5,
})

// @ts-expect-error
useSuspenseQueries({ queries: [query1] })
// @ts-expect-error
useSuspenseQueries({ queries: [query2] })
})
})
13 changes: 4 additions & 9 deletions packages/react-query/src/queryOptions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import type {
DefaultError,
InitialDataFunction,
OmitKeyof,
QueryFunction,
QueryKey,
SkipToken,
} from '@tanstack/query-core'
Expand Down Expand Up @@ -42,10 +43,11 @@ export type DefinedInitialDataOptions<
TError = DefaultError,
TData = TQueryFnData,
TQueryKey extends QueryKey = QueryKey,
> = UseQueryOptions<TQueryFnData, TError, TData, TQueryKey> & {
> = Omit<UseQueryOptions<TQueryFnData, TError, TData, TQueryKey>, 'queryFn'> & {
initialData:
| NonUndefinedGuard<TQueryFnData>
| (() => NonUndefinedGuard<TQueryFnData>)
queryFn: QueryFunction<TQueryFnData, TQueryKey>
}

export function queryOptions<
Expand All @@ -55,14 +57,7 @@ export function queryOptions<
TQueryKey extends QueryKey = QueryKey,
>(
options: DefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>,
): Omit<
DefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>,
'queryFn'
> & {
queryFn?: Exclude<
UseQueryOptions<TQueryFnData, TError, TData, TQueryKey>['queryFn'],
SkipToken | undefined
>
): DefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey> & {
queryKey: DataTag<TQueryKey, TQueryFnData, TError>
}

Expand Down

0 comments on commit 56183f0

Please sign in to comment.