Sfoglia il codice sorgente

fix(reactivity): add NaN prop on Array should not trigger length dependency. (#1998)

Hefty 5 anni fa
parent
commit
0d4910a211

+ 2 - 0
packages/reactivity/__tests__/reactiveArray.spec.ts

@@ -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', () => {

+ 4 - 1
packages/shared/src/index.ts

@@ -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,' +