5
5
reactive ,
6
6
readonly ,
7
7
watch ,
8
- unref ,
9
8
Ref ,
10
9
isRef ,
11
10
isReactive ,
@@ -15,6 +14,7 @@ import type { QueryFunction, QueryObserverResult } from "@tanstack/query-core";
15
14
16
15
import { useQueryClient } from "./useQueryClient" ;
17
16
import { UseQueryOptions } from "./useQuery" ;
17
+ import { cloneDeepUnref } from "./utils" ;
18
18
19
19
// Avoid TS depth-limit error in case of large array literal
20
20
type MAXIMUM_DEPTH = 20 ;
@@ -137,28 +137,28 @@ export function useQueries<T extends any[]>({
137
137
} : {
138
138
queries : Ref < UseQueriesOptionsArg < T > > | UseQueriesOptionsArg < T > ;
139
139
} ) : Readonly < UseQueriesResults < T > > {
140
- const queryClientKey = ( unref ( queries ) as UseQueriesOptionsArg < T > ) [ 0 ]
141
- ?. queryClientKey ;
140
+ const unreffedQueries = cloneDeepUnref ( queries ) as UseQueriesOptionsArg < T > ;
141
+
142
+ const queryClientKey = unreffedQueries [ 0 ] ?. queryClientKey ;
142
143
const queryClient = useQueryClient ( queryClientKey ) ;
143
- const defaultedQueries = ( unref ( queries ) as UseQueriesOptionsArg < T > ) . map (
144
- ( options ) => {
145
- return queryClient . defaultQueryOptions ( options ) ;
146
- }
147
- ) ;
144
+ const defaultedQueries = unreffedQueries . map ( ( options ) => {
145
+ return queryClient . defaultQueryOptions ( options ) ;
146
+ } ) ;
148
147
149
148
const observer = new QueriesObserver ( queryClient , defaultedQueries ) ;
150
149
const state = reactive ( observer . getCurrentResult ( ) ) ;
150
+
151
151
const unsubscribe = observer . subscribe ( ( result ) => {
152
152
state . splice ( 0 , state . length , ...result ) ;
153
153
} ) ;
154
154
155
155
if ( isRef ( queries ) || isReactive ( queries ) ) {
156
156
watch ( queries , ( ) => {
157
- const defaulted = ( unref ( queries ) as UseQueriesOptionsArg < T > ) . map (
158
- ( options ) => {
159
- return queryClient . defaultQueryOptions ( options ) ;
160
- }
161
- ) ;
157
+ const defaulted = (
158
+ cloneDeepUnref ( queries ) as UseQueriesOptionsArg < T >
159
+ ) . map ( ( options ) => {
160
+ return queryClient . defaultQueryOptions ( options ) ;
161
+ } ) ;
162
162
observer . setQueries ( defaulted ) ;
163
163
} ) ;
164
164
}
0 commit comments