@@ -163,9 +163,11 @@ export class Query<
163163 private observers : QueryObserver < any , any , any , any , any > [ ]
164164 private defaultOptions ?: QueryOptions < TQueryFnData , TError , TData , TQueryKey >
165165 private abortSignalConsumed : boolean
166+ private hadObservers : boolean
166167
167168 constructor ( config : QueryConfig < TQueryFnData , TError , TData , TQueryKey > ) {
168169 this . abortSignalConsumed = false
170+ this . hadObservers = false
169171 this . defaultOptions = config . defaultOptions
170172 this . setOptions ( config . options )
171173 this . observers = [ ]
@@ -175,6 +177,7 @@ export class Query<
175177 this . initialState = config . state || this . getDefaultState ( this . options )
176178 this . state = this . initialState
177179 this . meta = config . meta
180+ this . scheduleGc ( )
178181 }
179182
180183 private setOptions (
@@ -215,7 +218,9 @@ export class Query<
215218 private optionalRemove ( ) {
216219 if ( ! this . observers . length ) {
217220 if ( this . state . isFetching ) {
218- this . scheduleGc ( )
221+ if ( this . hadObservers ) {
222+ this . scheduleGc ( )
223+ }
219224 } else {
220225 this . cache . remove ( this )
221226 }
@@ -321,6 +326,7 @@ export class Query<
321326 addObserver ( observer : QueryObserver < any , any , any , any , any > ) : void {
322327 if ( this . observers . indexOf ( observer ) === - 1 ) {
323328 this . observers . push ( observer )
329+ this . hadObservers = true
324330
325331 // Stop the query from being garbage collected
326332 this . clearGcTimeout ( )
0 commit comments