Skip to content

Commit 999c8d2

Browse files
committed
refactor(query-core): improve setQueries flow and fix persist/restore issue with memoized combine
1 parent e351336 commit 999c8d2

1 file changed

Lines changed: 26 additions & 23 deletions

File tree

packages/query-core/src/queriesObserver.ts

Lines changed: 26 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -122,36 +122,39 @@ export class QueriesObserver<
122122
(observer, index) => observer !== prevObservers[index],
123123
)
124124

125-
if (prevObservers.length === newObservers.length && !hasIndexChange) {
126-
const hasResultChangeOnly = newResult.some((result, index) => {
127-
const prev = this.#result[index]
128-
return !prev || !shallowEqualObjects(result, prev)
129-
})
125+
const hasResultChange =
126+
prevObservers.length === newObservers.length && !hasIndexChange
127+
? newResult.some((result, index) => {
128+
const prev = this.#result[index]
129+
const isChanged = !prev || !shallowEqualObjects(result, prev)
130+
console.log(`Result ${index}:`, {
131+
hasData: !!result.data,
132+
prevData: prev?.data,
133+
dataChanged: result.data !== prev?.data,
134+
})
135+
return isChanged
136+
})
137+
: true
130138

131-
if (hasResultChangeOnly) {
132-
this.#result = newResult
133-
this.#notify()
134-
}
139+
if (!hasIndexChange && !hasResultChange) return
135140

136-
return
141+
if (hasIndexChange) {
142+
this.#observers = newObservers
137143
}
138-
139-
this.#observers = newObservers
140144
this.#result = newResult
141145

142-
if (!this.hasListeners()) {
143-
return
144-
}
145-
146-
difference(prevObservers, newObservers).forEach((observer) => {
147-
observer.destroy()
148-
})
146+
if (!this.hasListeners()) return
149147

150-
difference(newObservers, prevObservers).forEach((observer) => {
151-
observer.subscribe((result) => {
152-
this.#onUpdate(observer, result)
148+
if (hasIndexChange) {
149+
difference(prevObservers, newObservers).forEach((observer) => {
150+
observer.destroy()
153151
})
154-
})
152+
difference(newObservers, prevObservers).forEach((observer) => {
153+
observer.subscribe((result) => {
154+
this.#onUpdate(observer, result)
155+
})
156+
})
157+
}
155158

156159
this.#notify()
157160
})

0 commit comments

Comments
 (0)