File tree Expand file tree Collapse file tree 7 files changed +82
-2
lines changed Expand file tree Collapse file tree 7 files changed +82
-2
lines changed Original file line number Diff line number Diff line change @@ -253,4 +253,27 @@ describe('useQueries', () => {
253253 res : [ firstResult , secondResult ] ,
254254 } )
255255 } )
256+
257+ test ( 'should be `enabled` to accept getter function' , async ( ) => {
258+ const fetchFn = vi . fn ( )
259+ const checked = ref ( false )
260+
261+ useQueries ( {
262+ queries : [
263+ {
264+ queryKey : [ 'enabled' ] ,
265+ queryFn : fetchFn ,
266+ enabled : ( ) => checked . value ,
267+ } ,
268+ ] ,
269+ } )
270+
271+ expect ( fetchFn ) . not . toHaveBeenCalled ( )
272+
273+ checked . value = true
274+
275+ await flushPromises ( )
276+
277+ expect ( fetchFn ) . toHaveBeenCalled ( )
278+ } )
256279} )
Original file line number Diff line number Diff line change @@ -269,6 +269,25 @@ describe('useQuery', () => {
269269 )
270270 } )
271271
272+ test ( 'should be `enabled` to accept getter function' , async ( ) => {
273+ const fetchFn = vi . fn ( )
274+ const checked = ref ( false )
275+
276+ useQuery ( {
277+ queryKey : [ 'enabled' ] ,
278+ queryFn : fetchFn ,
279+ enabled : ( ) => checked . value ,
280+ } )
281+
282+ expect ( fetchFn ) . not . toHaveBeenCalled ( )
283+
284+ checked . value = true
285+
286+ await flushPromises ( )
287+
288+ expect ( fetchFn ) . toHaveBeenCalled ( )
289+ } )
290+
272291 describe ( 'throwOnError' , ( ) => {
273292 test ( 'should evaluate throwOnError when query is expected to throw' , async ( ) => {
274293 const boundaryFn = vi . fn ( )
Original file line number Diff line number Diff line change @@ -14,6 +14,8 @@ type UnwrapLeaf =
1414
1515export type MaybeRef < T > = Ref < T > | T
1616
17+ export type MaybeRefOrGetter < T > = MaybeRef < T > | ( ( ) => T )
18+
1719export type MaybeRefDeep < T > = MaybeRef <
1820 T extends Function
1921 ? T
Original file line number Diff line number Diff line change @@ -84,13 +84,19 @@ export function useBaseQuery<
8484 const client = queryClient || useQueryClient ( )
8585
8686 const defaultedOptions = computed ( ( ) => {
87+ const clonedOptions = cloneDeepUnref ( options as any )
88+
89+ if ( typeof clonedOptions . enabled === 'function' ) {
90+ clonedOptions . enabled = clonedOptions . enabled ( )
91+ }
92+
8793 const defaulted : DefaultedQueryObserverOptions <
8894 TQueryFnData ,
8995 TError ,
9096 TData ,
9197 TQueryData ,
9298 TQueryKey
93- > = client . defaultQueryOptions ( cloneDeepUnref ( options as any ) )
99+ > = client . defaultQueryOptions ( clonedOptions )
94100
95101 defaulted . _optimisticResults = client . isRestoring . value
96102 ? 'isRestoring'
Original file line number Diff line number Diff line change @@ -12,7 +12,12 @@ import type {
1212
1313import type { UseBaseQueryReturnType } from './useBaseQuery'
1414
15- import type { DeepUnwrapRef , DistributiveOmit , MaybeRefDeep } from './types'
15+ import type {
16+ DeepUnwrapRef ,
17+ DistributiveOmit ,
18+ MaybeRefDeep ,
19+ MaybeRefOrGetter ,
20+ } from './types'
1621import type { QueryClient } from './queryClient'
1722
1823export type UseInfiniteQueryOptions <
@@ -39,6 +44,16 @@ export type UseInfiniteQueryOptions<
3944 DeepUnwrapRef < TQueryKey > ,
4045 TPageParam
4146 > [ Property ]
47+ : Property extends 'enabled'
48+ ? MaybeRefOrGetter <
49+ InfiniteQueryObserverOptions <
50+ TQueryFnData ,
51+ TError ,
52+ TData ,
53+ TQueryData ,
54+ TQueryKey
55+ > [ Property ]
56+ >
4257 : MaybeRefDeep <
4358 WithRequired <
4459 InfiniteQueryObserverOptions <
Original file line number Diff line number Diff line change @@ -186,6 +186,10 @@ export function useQueries<
186186
187187 const defaultedQueries = computed ( ( ) =>
188188 cloneDeepUnref ( queries ) . map ( ( queryOptions ) => {
189+ if ( typeof queryOptions . enabled === 'function' ) {
190+ queryOptions . enabled = queryOptions . enabled ( )
191+ }
192+
189193 const defaulted = client . defaultQueryOptions ( queryOptions )
190194 defaulted . _optimisticResults = client . isRestoring . value
191195 ? 'isRestoring'
Original file line number Diff line number Diff line change @@ -15,6 +15,7 @@ import type {
1515 DistributiveOmit ,
1616 MaybeRef ,
1717 MaybeRefDeep ,
18+ MaybeRefOrGetter ,
1819} from './types'
1920import type { QueryClient } from './queryClient'
2021
@@ -39,6 +40,16 @@ export type UseQueryOptions<
3940 TQueryData ,
4041 DeepUnwrapRef < TQueryKey >
4142 > [ Property ]
43+ : Property extends 'enabled'
44+ ? MaybeRefOrGetter <
45+ QueryObserverOptions <
46+ TQueryFnData ,
47+ TError ,
48+ TData ,
49+ TQueryData ,
50+ TQueryKey
51+ > [ Property ]
52+ >
4253 : MaybeRefDeep <
4354 WithRequired <
4455 QueryObserverOptions <
You can’t perform that action at this time.
0 commit comments