diff --git a/packages/query-core/src/queriesObserver.ts b/packages/query-core/src/queriesObserver.ts index 853e490abd..b3e426f6b1 100644 --- a/packages/query-core/src/queriesObserver.ts +++ b/packages/query-core/src/queriesObserver.ts @@ -44,6 +44,7 @@ export class QueriesObserver< #lastCombine?: CombineFn #lastResult?: Array #observerMatches: Array = [] + #indexMap: WeakMap = new WeakMap() constructor( client: QueryClient, @@ -129,6 +130,11 @@ export class QueriesObserver< this.#observers = newObservers this.#result = newResult + this.#indexMap = new WeakMap() + newObservers.forEach((observer, index) => { + this.#indexMap.set(observer, index) + }) + if (!this.hasListeners()) { return } @@ -252,8 +258,8 @@ export class QueriesObserver< } #onUpdate(observer: QueryObserver, result: QueryObserverResult): void { - const index = this.#observers.indexOf(observer) - if (index !== -1) { + const index = this.#indexMap.get(observer) + if (index !== undefined) { this.#result = replaceAt(this.#result, index, result) this.#notify() }