Skip to content

Commit 2174de7

Browse files
author
scl
committed
perf(query-core): useQueries have quadratic performance in relation to the number of queries(#8604)
1 parent e474f73 commit 2174de7

File tree

1 file changed

+8
-2
lines changed

1 file changed

+8
-2
lines changed

packages/query-core/src/queriesObserver.ts

+8-2
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ export class QueriesObserver<
4444
#lastCombine?: CombineFn<TCombinedResult>
4545
#lastResult?: Array<QueryObserverResult>
4646
#observerMatches: Array<QueryObserverMatch> = []
47+
#observerMap: Map<QueryObserver, number> = new Map()
4748

4849
constructor(
4950
client: QueryClient,
@@ -130,6 +131,11 @@ export class QueriesObserver<
130131
this.#observers = newObservers
131132
this.#result = newResult
132133

134+
this.#observerMap.clear()
135+
newObservers.forEach((observer, index) => {
136+
this.#observerMap.set(observer, index)
137+
})
138+
133139
if (!this.hasListeners()) {
134140
return
135141
}
@@ -253,8 +259,8 @@ export class QueriesObserver<
253259
}
254260

255261
#onUpdate(observer: QueryObserver, result: QueryObserverResult): void {
256-
const index = this.#observers.indexOf(observer)
257-
if (index !== -1) {
262+
const index = this.#observerMap.get(observer)
263+
if (index !== undefined) {
258264
this.#result = replaceAt(this.#result, index, result)
259265
this.#notify()
260266
}

0 commit comments

Comments
 (0)