File tree Expand file tree Collapse file tree 2 files changed +9
-4
lines changed
test/unit/modules/observer Expand file tree Collapse file tree 2 files changed +9
-4
lines changed Original file line number Diff line number Diff line change @@ -162,7 +162,7 @@ export function defineReactive (
162
162
} ,
163
163
set : function reactiveSetter ( newVal ) {
164
164
const value = getter ? getter . call ( obj ) : val
165
- if ( newVal === value ) {
165
+ if ( newVal === value || ( newVal !== newVal && value !== value ) ) {
166
166
return
167
167
}
168
168
if ( process . env . NODE_ENV !== 'production' && customSetter ) {
Original file line number Diff line number Diff line change @@ -177,7 +177,7 @@ describe('Observer', () => {
177
177
} )
178
178
179
179
it ( 'observing object prop change' , ( ) => {
180
- const obj = { a : { b : 2 } }
180
+ const obj = { a : { b : 2 } , c : NaN }
181
181
observe ( obj )
182
182
// mock a watcher!
183
183
const watcher = {
@@ -192,20 +192,25 @@ describe('Observer', () => {
192
192
Dep . target = watcher
193
193
obj . a . b
194
194
Dep . target = null
195
- expect ( watcher . deps . length ) . toBe ( 3 ) // obj.a + a.b + b
195
+ expect ( watcher . deps . length ) . toBe ( 3 ) // obj.a + a + a. b
196
196
obj . a . b = 3
197
197
expect ( watcher . update . calls . count ( ) ) . toBe ( 1 )
198
198
// swap object
199
199
obj . a = { b : 4 }
200
200
expect ( watcher . update . calls . count ( ) ) . toBe ( 2 )
201
201
watcher . deps = [ ]
202
+
202
203
Dep . target = watcher
203
204
obj . a . b
205
+ obj . c
204
206
Dep . target = null
205
- expect ( watcher . deps . length ) . toBe ( 3 )
207
+ expect ( watcher . deps . length ) . toBe ( 4 )
206
208
// set on the swapped object
207
209
obj . a . b = 5
208
210
expect ( watcher . update . calls . count ( ) ) . toBe ( 3 )
211
+ // should not trigger on NaN -> NaN set
212
+ obj . c = NaN
213
+ expect ( watcher . update . calls . count ( ) ) . toBe ( 3 )
209
214
} )
210
215
211
216
it ( 'observing object prop change on defined property' , ( ) => {
You can’t perform that action at this time.
0 commit comments