@@ -163,9 +163,11 @@ export class Query<
163
163
private observers : QueryObserver < any , any , any , any , any > [ ]
164
164
private defaultOptions ?: QueryOptions < TQueryFnData , TError , TData , TQueryKey >
165
165
private abortSignalConsumed : boolean
166
+ private hadObservers : boolean
166
167
167
168
constructor ( config : QueryConfig < TQueryFnData , TError , TData , TQueryKey > ) {
168
169
this . abortSignalConsumed = false
170
+ this . hadObservers = false
169
171
this . defaultOptions = config . defaultOptions
170
172
this . setOptions ( config . options )
171
173
this . observers = [ ]
@@ -175,6 +177,7 @@ export class Query<
175
177
this . initialState = config . state || this . getDefaultState ( this . options )
176
178
this . state = this . initialState
177
179
this . meta = config . meta
180
+ this . scheduleGc ( )
178
181
}
179
182
180
183
private setOptions (
@@ -215,7 +218,9 @@ export class Query<
215
218
private optionalRemove ( ) {
216
219
if ( ! this . observers . length ) {
217
220
if ( this . state . isFetching ) {
218
- this . scheduleGc ( )
221
+ if ( this . hadObservers ) {
222
+ this . scheduleGc ( )
223
+ }
219
224
} else {
220
225
this . cache . remove ( this )
221
226
}
@@ -321,6 +326,7 @@ export class Query<
321
326
addObserver ( observer : QueryObserver < any , any , any , any , any > ) : void {
322
327
if ( this . observers . indexOf ( observer ) === - 1 ) {
323
328
this . observers . push ( observer )
329
+ this . hadObservers = true
324
330
325
331
// Stop the query from being garbage collected
326
332
this . clearGcTimeout ( )
0 commit comments