From: Hefty Date: Tue, 15 Sep 2020 00:40:09 +0000 (+0800) Subject: fix(reactivity): add NaN prop on Array should not trigger length dependency. (#1998) X-Git-Tag: v3.0.0-rc.11~22 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0d4910a211f6debd8ea5ca414d6308f1028679a3;p=thirdparty%2Fvuejs%2Fcore.git fix(reactivity): add NaN prop on Array should not trigger length dependency. (#1998) --- diff --git a/packages/reactivity/__tests__/reactiveArray.spec.ts b/packages/reactivity/__tests__/reactiveArray.spec.ts index 0ab458d34f..170cb1b39c 100644 --- a/packages/reactivity/__tests__/reactiveArray.spec.ts +++ b/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', () => { diff --git a/packages/shared/src/index.ts b/packages/shared/src/index.ts index 7daeaa5242..46f1a462c9 100644 --- a/packages/shared/src/index.ts +++ b/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,' +