Skip to content

Commit

Permalink
fix(react-query): fix type breaking when using useSuspenseQueries wit…
Browse files Browse the repository at this point in the history
…h spreaded queryOptions
  • Loading branch information
gs18004 committed Feb 26, 2025
1 parent 74db582 commit 4c1323b
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 5 deletions.
29 changes: 28 additions & 1 deletion packages/react-query/src/__tests__/useSuspenseQueries.test-d.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,15 @@ describe('UseSuspenseQueries config object overload', () => {

const queries1List = [1, 2, 3].map(() => ({ ...Queries1.get() }))
const result = useSuspenseQueries({
queries: [...queries1List, { ...Queries2.get() }],
queries: [
...queries1List,
{
...Queries2.get(),
select(data: boolean) {
return data
},
},
],
})

expectTypeOf(result).toEqualTypeOf<
Expand Down Expand Up @@ -214,4 +222,23 @@ describe('UseSuspenseQueries config object overload', () => {
// @ts-expect-error
useSuspenseQueries({ queries: [query2] })
})

it('test', () => {
function myQueryOptions() {
return queryOptions({
queryKey: ['key1'],
queryFn: () => 'Query Data',
})
}
useSuspenseQueries({
queries: [
{
...myQueryOptions(),
select(data: string) {
return data
},
},
],
})
})
})
21 changes: 17 additions & 4 deletions packages/react-query/src/useSuspenseQueries.ts
Original file line number Diff line number Diff line change
Expand Up @@ -169,15 +169,28 @@ export function useSuspenseQueries<
options: {
queries:
| readonly [...SuspenseQueriesOptions<T>]
| readonly [...{ [K in keyof T]: GetUseSuspenseQueryOptions<T[K]> }]
| [...{ [K in keyof T]: GetUseSuspenseQueryOptions<T[K]> }]
combine?: (result: SuspenseQueriesResults<T>) => TCombinedResult
},
queryClient?: QueryClient,
): TCombinedResult {
): TCombinedResult

export function useSuspenseQueries<
T extends Array<any>,
TCombinedResult = SuspenseQueriesResults<T>,
>(
options: {
queries: readonly [...SuspenseQueriesOptions<T>]
combine?: (result: SuspenseQueriesResults<T>) => TCombinedResult
},
queryClient?: QueryClient,
): TCombinedResult

export function useSuspenseQueries(options: any, queryClient?: QueryClient) {
return useQueries(
{
...options,
queries: options.queries.map((query) => {
queries: options.queries.map((query: any) => {
if (process.env.NODE_ENV !== 'production') {
if (query.queryFn === skipToken) {
console.error('skipToken is not allowed for useSuspenseQueries')
Expand All @@ -192,7 +205,7 @@ export function useSuspenseQueries<
placeholderData: undefined,
}
}),
} as any,
},
queryClient,
)
}

0 comments on commit 4c1323b

Please sign in to comment.