]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
fix(reactivity): add NaN prop on Array should not trigger length dependency. (#1998)
authorHefty <yeyuqiudeng@gmail.com>
Tue, 15 Sep 2020 00:40:09 +0000 (08:40 +0800)
committerGitHub <noreply@github.com>
Tue, 15 Sep 2020 00:40:09 +0000 (20:40 -0400)
packages/reactivity/__tests__/reactiveArray.spec.ts
packages/shared/src/index.ts

index 0ab458d34f18f6635107556ae8a4f099314b339e..170cb1b39c1f5fc5c1fc63599ae77efa6477f147 100644 (file)
@@ -124,6 +124,8 @@ describe('reactivity/reactive/Array', () => {
     expect(fn).toHaveBeenCalledTimes(1)
     observed[-1] = 'x'
     expect(fn).toHaveBeenCalledTimes(1)
+    observed[NaN] = 'x'
+    expect(fn).toHaveBeenCalledTimes(1)
   })
 
   describe('Array methods w/ refs', () => {
index 7daeaa5242cd8d201102fd3c7219af834da2c7a4..46f1a462c9e7b750adaa5c7d310d083ccfdec980 100644 (file)
@@ -87,7 +87,10 @@ export const isPlainObject = (val: unknown): val is object =>
   toTypeString(val) === '[object Object]'
 
 export const isIntegerKey = (key: unknown) =>
-  isString(key) && key[0] !== '-' && '' + parseInt(key, 10) === key
+  isString(key) &&
+  key !== 'NaN' &&
+  key[0] !== '-' &&
+  '' + parseInt(key, 10) === key
 
 export const isReservedProp = /*#__PURE__*/ makeMap(
   'key,ref,' +