From ede5b5ed819ab6c8b1676624dba4676a2b734bd5 Mon Sep 17 00:00:00 2001 From: zhangenming <282126346@qq.com> Date: Sun, 5 Mar 2023 22:39:26 +0800 Subject: [PATCH 1/4] Update renderList.ts --- packages/runtime-core/src/helpers/renderList.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/runtime-core/src/helpers/renderList.ts b/packages/runtime-core/src/helpers/renderList.ts index 1655d555fb3..a21c7521ef0 100644 --- a/packages/runtime-core/src/helpers/renderList.ts +++ b/packages/runtime-core/src/helpers/renderList.ts @@ -60,8 +60,9 @@ export function renderList( const cached = (cache && cache[index!]) as VNode[] | undefined if (isArray(source) || isString(source)) { - ret = new Array(source.length) - for (let i = 0, l = source.length; i < l; i++) { + const len = source.length + ret = new Array(len) + for (let i = 0; i < len; i++) { ret[i] = renderItem(source[i], i, undefined, cached && cached[i]) } } else if (typeof source === 'number') { From 2a53a2412b489a189047972b529810f8d99e85cd Mon Sep 17 00:00:00 2001 From: zhangenming <282126346@qq.com> Date: Sun, 5 Mar 2023 22:54:36 +0800 Subject: [PATCH 2/4] do a refactore by the way --- packages/runtime-core/src/helpers/renderList.ts | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/packages/runtime-core/src/helpers/renderList.ts b/packages/runtime-core/src/helpers/renderList.ts index a21c7521ef0..502a84cec75 100644 --- a/packages/runtime-core/src/helpers/renderList.ts +++ b/packages/runtime-core/src/helpers/renderList.ts @@ -56,12 +56,11 @@ export function renderList( cache?: any[], index?: number ): VNodeChild[] { - let ret: VNodeChild[] + let ret: VNodeChild[] = [] const cached = (cache && cache[index!]) as VNode[] | undefined if (isArray(source) || isString(source)) { const len = source.length - ret = new Array(len) for (let i = 0; i < len; i++) { ret[i] = renderItem(source[i], i, undefined, cached && cached[i]) } @@ -69,7 +68,6 @@ export function renderList( if (__DEV__ && !Number.isInteger(source)) { warn(`The v-for range expect an integer value but got ${source}.`) } - ret = new Array(source) for (let i = 0; i < source; i++) { ret[i] = renderItem(i + 1, i, undefined, cached && cached[i]) } @@ -80,14 +78,11 @@ export function renderList( ) } else { const keys = Object.keys(source) - ret = new Array(keys.length) for (let i = 0, l = keys.length; i < l; i++) { const key = keys[i] ret[i] = renderItem(source[key], key, i, cached && cached[i]) } } - } else { - ret = [] } if (cache) { From 0ed06afe685dc661c25205b11d314296f2ba1a37 Mon Sep 17 00:00:00 2001 From: zhangenming <282126346@qq.com> Date: Sun, 5 Mar 2023 23:18:13 +0800 Subject: [PATCH 3/4] Update renderList.ts --- packages/runtime-core/src/helpers/renderList.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/runtime-core/src/helpers/renderList.ts b/packages/runtime-core/src/helpers/renderList.ts index 502a84cec75..a5c5c0665b2 100644 --- a/packages/runtime-core/src/helpers/renderList.ts +++ b/packages/runtime-core/src/helpers/renderList.ts @@ -56,7 +56,7 @@ export function renderList( cache?: any[], index?: number ): VNodeChild[] { - let ret: VNodeChild[] = [] + const ret: VNodeChild[] = [] const cached = (cache && cache[index!]) as VNode[] | undefined if (isArray(source) || isString(source)) { From 316aa6581074976684837fc99fc8e28f21dd1041 Mon Sep 17 00:00:00 2001 From: zhangenming <282126346@qq.com> Date: Sun, 5 Mar 2023 23:38:01 +0800 Subject: [PATCH 4/4] revert --- packages/runtime-core/src/helpers/renderList.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/runtime-core/src/helpers/renderList.ts b/packages/runtime-core/src/helpers/renderList.ts index a5c5c0665b2..a5453a4029c 100644 --- a/packages/runtime-core/src/helpers/renderList.ts +++ b/packages/runtime-core/src/helpers/renderList.ts @@ -56,7 +56,7 @@ export function renderList( cache?: any[], index?: number ): VNodeChild[] { - const ret: VNodeChild[] = [] + let ret: VNodeChild[] = [] const cached = (cache && cache[index!]) as VNode[] | undefined if (isArray(source) || isString(source)) { @@ -88,5 +88,6 @@ export function renderList( if (cache) { cache[index!] = ret } + return ret }