Skip to content

Commit ac4c56c

Browse files
authored
fix(react-query): fix type breaking when using useSuspenseQueries with spreaded queryOptions (#8709)
* fix(react-query): fix type breaking when using useSuspenseQueries with spreaded queryOptions * test: change test title
1 parent 74db582 commit ac4c56c

File tree

2 files changed

+45
-5
lines changed

2 files changed

+45
-5
lines changed

packages/react-query/src/__tests__/useSuspenseQueries.test-d.tsx

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,15 @@ describe('UseSuspenseQueries config object overload', () => {
173173

174174
const queries1List = [1, 2, 3].map(() => ({ ...Queries1.get() }))
175175
const result = useSuspenseQueries({
176-
queries: [...queries1List, { ...Queries2.get() }],
176+
queries: [
177+
...queries1List,
178+
{
179+
...Queries2.get(),
180+
select(data: boolean) {
181+
return data
182+
},
183+
},
184+
],
177185
})
178186

179187
expectTypeOf(result).toEqualTypeOf<
@@ -214,4 +222,23 @@ describe('UseSuspenseQueries config object overload', () => {
214222
// @ts-expect-error
215223
useSuspenseQueries({ queries: [query2] })
216224
})
225+
226+
it('should not show type error when using spreaded queryOptions', () => {
227+
function myQueryOptions() {
228+
return queryOptions({
229+
queryKey: ['key1'],
230+
queryFn: () => 'Query Data',
231+
})
232+
}
233+
useSuspenseQueries({
234+
queries: [
235+
{
236+
...myQueryOptions(),
237+
select(data: string) {
238+
return data
239+
},
240+
},
241+
],
242+
})
243+
})
217244
})

packages/react-query/src/useSuspenseQueries.ts

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -169,15 +169,28 @@ export function useSuspenseQueries<
169169
options: {
170170
queries:
171171
| readonly [...SuspenseQueriesOptions<T>]
172-
| readonly [...{ [K in keyof T]: GetUseSuspenseQueryOptions<T[K]> }]
172+
| [...{ [K in keyof T]: GetUseSuspenseQueryOptions<T[K]> }]
173173
combine?: (result: SuspenseQueriesResults<T>) => TCombinedResult
174174
},
175175
queryClient?: QueryClient,
176-
): TCombinedResult {
176+
): TCombinedResult
177+
178+
export function useSuspenseQueries<
179+
T extends Array<any>,
180+
TCombinedResult = SuspenseQueriesResults<T>,
181+
>(
182+
options: {
183+
queries: readonly [...SuspenseQueriesOptions<T>]
184+
combine?: (result: SuspenseQueriesResults<T>) => TCombinedResult
185+
},
186+
queryClient?: QueryClient,
187+
): TCombinedResult
188+
189+
export function useSuspenseQueries(options: any, queryClient?: QueryClient) {
177190
return useQueries(
178191
{
179192
...options,
180-
queries: options.queries.map((query) => {
193+
queries: options.queries.map((query: any) => {
181194
if (process.env.NODE_ENV !== 'production') {
182195
if (query.queryFn === skipToken) {
183196
console.error('skipToken is not allowed for useSuspenseQueries')
@@ -192,7 +205,7 @@ export function useSuspenseQueries<
192205
placeholderData: undefined,
193206
}
194207
}),
195-
} as any,
208+
},
196209
queryClient,
197210
)
198211
}

0 commit comments

Comments
 (0)