@@ -30,7 +30,7 @@ import type {
30
30
ResetQueryFilters ,
31
31
SetDataOptions ,
32
32
} from './types'
33
- import type { QueryState } from './query'
33
+ import type { Query , QueryState } from './query'
34
34
import { QueryCache } from './queryCache'
35
35
import { MutationCache } from './mutationCache'
36
36
import { focusManager } from './focusManager'
@@ -136,7 +136,15 @@ export class QueryClient {
136
136
let query = this . queryCache . find < TData > ( queryKey )
137
137
138
138
if ( query ) {
139
- return query . setData ( updater , options )
139
+ const prevData = query . state . data
140
+ const updatedData = query . setData ( updater , options )
141
+
142
+ if ( typeof updatedData !== 'undefined' && ! Object . is ( prevData , updatedData ) ) {
143
+ // Notify cache callback
144
+ this . queryCache . config . onSuccess ?.( updatedData , query as Query < any , any , any , any > )
145
+ }
146
+
147
+ return updatedData
140
148
}
141
149
142
150
const data = functionalUpdate ( updater , undefined )
@@ -148,7 +156,9 @@ export class QueryClient {
148
156
const parsedOptions = parseQueryArgs ( queryKey )
149
157
const defaultedOptions = this . defaultQueryOptions ( parsedOptions )
150
158
query = this . queryCache . build ( this , defaultedOptions )
151
- query . setData ( data , options )
159
+ const updatedData = query . setData ( data , options )
160
+ this . queryCache . config . onSuccess ?.( updatedData , query as Query < any , any , any , any > )
161
+ return updatedData
152
162
}
153
163
154
164
setQueriesData < TData > (
0 commit comments