@@ -297,11 +297,31 @@ export function useQueries<
297
297
defaultedQueries . value ,
298
298
options as QueriesObserverOptions < TCombinedResult > ,
299
299
)
300
- const [ , getCombinedResult ] = observer . getOptimisticResult (
301
- defaultedQueries . value ,
302
- ( options as QueriesObserverOptions < TCombinedResult > ) . combine ,
303
- )
304
- const state = shallowRef ( getCombinedResult ( ) )
300
+
301
+ const getOptimisticResult = ( ) => {
302
+ const [ results , getCombinedResult ] = observer . getOptimisticResult (
303
+ defaultedQueries . value ,
304
+ ( options as QueriesObserverOptions < TCombinedResult > ) . combine ,
305
+ )
306
+
307
+ return getCombinedResult (
308
+ results . map ( ( result , index ) => {
309
+ return {
310
+ ...result ,
311
+ refetch : async ( ...args : Array < any > ) => {
312
+ const [ { [ index ] : query } ] = observer . getOptimisticResult (
313
+ defaultedQueries . value ,
314
+ ( options as QueriesObserverOptions < TCombinedResult > ) . combine ,
315
+ )
316
+
317
+ return query ! . refetch ( ...args )
318
+ } ,
319
+ }
320
+ } ) ,
321
+ )
322
+ }
323
+
324
+ const state = shallowRef ( getOptimisticResult ( ) )
305
325
306
326
let unsubscribe = ( ) => {
307
327
// noop
@@ -313,38 +333,22 @@ export function useQueries<
313
333
if ( ! isRestoring ) {
314
334
unsubscribe ( )
315
335
unsubscribe = observer . subscribe ( ( ) => {
316
- const [ , getCombinedResultRestoring ] = observer . getOptimisticResult (
317
- defaultedQueries . value ,
318
- ( options as QueriesObserverOptions < TCombinedResult > ) . combine ,
319
- )
320
- state . value = getCombinedResultRestoring ( )
336
+ state . value = getOptimisticResult ( )
321
337
} )
322
- // Subscription would not fire for persisted results
323
- const [ , getCombinedResultPersisted ] = observer . getOptimisticResult (
324
- defaultedQueries . value ,
325
- ( options as QueriesObserverOptions < TCombinedResult > ) . combine ,
326
- )
327
- state . value = getCombinedResultPersisted ( )
338
+
339
+ state . value = getOptimisticResult ( )
328
340
}
329
341
} ,
330
342
{ immediate : true } ,
331
343
)
332
344
333
- watch (
334
- defaultedQueries ,
335
- ( ) => {
336
- observer . setQueries (
337
- defaultedQueries . value ,
338
- options as QueriesObserverOptions < TCombinedResult > ,
339
- )
340
- const [ , getCombinedResultPersisted ] = observer . getOptimisticResult (
341
- defaultedQueries . value ,
342
- ( options as QueriesObserverOptions < TCombinedResult > ) . combine ,
343
- )
344
- state . value = getCombinedResultPersisted ( )
345
- } ,
346
- { flush : 'sync' } ,
347
- )
345
+ watch ( defaultedQueries , ( queriesValue ) => {
346
+ observer . setQueries (
347
+ queriesValue ,
348
+ options as QueriesObserverOptions < TCombinedResult > ,
349
+ )
350
+ state . value = getOptimisticResult ( )
351
+ } )
348
352
349
353
onScopeDispose ( ( ) => {
350
354
unsubscribe ( )
0 commit comments