diff --git a/packages/query-core/src/queriesObserver.ts b/packages/query-core/src/queriesObserver.ts index c330351f06..2a0ac5b502 100644 --- a/packages/query-core/src/queriesObserver.ts +++ b/packages/query-core/src/queriesObserver.ts @@ -43,6 +43,7 @@ export class QueriesObserver< #lastCombine?: CombineFn #lastResult?: Array #observerMatches: Array = [] + #observerMap: Map = new Map() constructor( client: QueryClient, @@ -81,6 +82,7 @@ export class QueriesObserver< this.#observers.forEach((observer) => { observer.destroy() }) + this.#observerMap.clear() } setQueries( @@ -128,6 +130,11 @@ export class QueriesObserver< this.#observers = newObservers this.#result = newResult + this.#observerMap.clear() + newObservers.forEach((observer, index) => { + this.#observerMap.set(observer, index) + }) + if (!this.hasListeners()) { return } @@ -251,8 +258,8 @@ export class QueriesObserver< } #onUpdate(observer: QueryObserver, result: QueryObserverResult): void { - const index = this.#observers.indexOf(observer) - if (index !== -1) { + const index = this.#observerMap.get(observer) + if (index !== undefined) { this.#result = replaceAt(this.#result, index, result) this.#notify() }