Skip to content

Commit b2a5d1d

Browse files
author
dony.sukardi
committed
do not refetch active when active is false
1 parent 0b3383b commit b2a5d1d

File tree

3 files changed

+25
-3
lines changed

3 files changed

+25
-3
lines changed

src/core/queryClient.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,9 @@ export class QueryClient {
238238

239239
const refetchFilters: QueryFilters = {
240240
...filters,
241-
active: filters.refetchActive ?? true,
241+
// if filters.refetchActive is not provided and filters.active is explicitly false,
242+
// e.g. invalidateQueries({ active: false }), we don't want to refetch active queries
243+
active: filters.refetchActive ?? filters.active ?? true,
242244
inactive: filters.refetchInactive ?? false,
243245
}
244246

src/core/tests/queryClient.test.tsx

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -789,6 +789,27 @@ describe('queryClient', () => {
789789
expect(queryFn1).toHaveBeenCalledTimes(2)
790790
expect(queryFn2).toHaveBeenCalledTimes(1)
791791
})
792+
793+
test('should not refetch active queries when "active" is false', async () => {
794+
const key1 = queryKey()
795+
const key2 = queryKey()
796+
const queryFn1 = jest.fn()
797+
const queryFn2 = jest.fn()
798+
await queryClient.fetchQuery(key1, queryFn1)
799+
await queryClient.fetchQuery(key2, queryFn2)
800+
const observer = new QueryObserver(queryClient, {
801+
queryKey: key1,
802+
queryFn: queryFn1,
803+
staleTime: Infinity,
804+
})
805+
const unsubscribe = observer.subscribe()
806+
queryClient.invalidateQueries(key1, {
807+
active: false,
808+
})
809+
unsubscribe()
810+
expect(queryFn1).toHaveBeenCalledTimes(1)
811+
expect(queryFn2).toHaveBeenCalledTimes(1)
812+
})
792813
})
793814

794815
describe('resetQueries', () => {

src/core/types.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -240,8 +240,7 @@ export interface RefetchOptions extends ResultOptions {
240240
cancelRefetch?: boolean
241241
}
242242

243-
export interface InvalidateQueryFilters
244-
extends Omit<QueryFilters, 'active' | 'inactive'> {
243+
export interface InvalidateQueryFilters extends QueryFilters {
245244
refetchActive?: boolean
246245
refetchInactive?: boolean
247246
}

0 commit comments

Comments
 (0)