Skip to content

Commit 56183f0

Browse files
authoredFeb 18, 2025··
fix(react-query): make error to be shown when using queryOptions with 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
1 parent 044acae commit 56183f0

File tree

2 files changed

+22
-9
lines changed

2 files changed

+22
-9
lines changed
 

Diff for: ‎packages/react-query/src/__tests__/useSuspenseQueries.test-d.tsx

+18
Original file line numberDiff line numberDiff line change
@@ -167,4 +167,22 @@ describe('UseSuspenseQueries config object overload', () => {
167167

168168
expectTypeOf(query1Data).toEqualTypeOf<string>()
169169
})
170+
171+
it('queryOptions with skipToken in queryFn should not work on useSuspenseQueries', () => {
172+
const query1 = queryOptions({
173+
queryKey: ['key1'],
174+
queryFn: Math.random() > 0.5 ? skipToken : () => Promise.resolve(5),
175+
})
176+
177+
const query2 = queryOptions({
178+
queryKey: ['key1'],
179+
queryFn: Math.random() > 0.5 ? skipToken : () => Promise.resolve(5),
180+
initialData: 5,
181+
})
182+
183+
// @ts-expect-error
184+
useSuspenseQueries({ queries: [query1] })
185+
// @ts-expect-error
186+
useSuspenseQueries({ queries: [query2] })
187+
})
170188
})

Diff for: ‎packages/react-query/src/queryOptions.ts

+4-9
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import type {
33
DefaultError,
44
InitialDataFunction,
55
OmitKeyof,
6+
QueryFunction,
67
QueryKey,
78
SkipToken,
89
} from '@tanstack/query-core'
@@ -42,10 +43,11 @@ export type DefinedInitialDataOptions<
4243
TError = DefaultError,
4344
TData = TQueryFnData,
4445
TQueryKey extends QueryKey = QueryKey,
45-
> = UseQueryOptions<TQueryFnData, TError, TData, TQueryKey> & {
46+
> = Omit<UseQueryOptions<TQueryFnData, TError, TData, TQueryKey>, 'queryFn'> & {
4647
initialData:
4748
| NonUndefinedGuard<TQueryFnData>
4849
| (() => NonUndefinedGuard<TQueryFnData>)
50+
queryFn: QueryFunction<TQueryFnData, TQueryKey>
4951
}
5052

5153
export function queryOptions<
@@ -55,14 +57,7 @@ export function queryOptions<
5557
TQueryKey extends QueryKey = QueryKey,
5658
>(
5759
options: DefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>,
58-
): Omit<
59-
DefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>,
60-
'queryFn'
61-
> & {
62-
queryFn?: Exclude<
63-
UseQueryOptions<TQueryFnData, TError, TData, TQueryKey>['queryFn'],
64-
SkipToken | undefined
65-
>
60+
): DefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey> & {
6661
queryKey: DataTag<TQueryKey, TQueryFnData, TError>
6762
}
6863

0 commit comments

Comments
 (0)
Please sign in to comment.