From b17fedddc6122c9cf760428c963e57f175035fb1 Mon Sep 17 00:00:00 2001 From: Doctorwu Date: Sat, 6 Jan 2024 00:11:58 +0800 Subject: [PATCH 1/2] fix(runtime-core): fix empty fragment in runtime-core fix #10007 --- packages/runtime-core/src/renderer.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/runtime-core/src/renderer.ts b/packages/runtime-core/src/renderer.ts index fa1f08c3c9c..50f8c75f030 100644 --- a/packages/runtime-core/src/renderer.ts +++ b/packages/runtime-core/src/renderer.ts @@ -1086,7 +1086,11 @@ function baseCreateRenderer( // since they are either generated by the compiler, or implicitly created // from arrays. mountChildren( - n2.children as VNodeArrayChildren, + // #10007 + // such fragment like `<>` will be compiled into + // a fragment which doesn't have a children. + // In this case fallback to an empty array + (n2.children || []) as VNodeArrayChildren, container, fragmentEndAnchor, parentComponent, From a2e1d23ce81832d1b21313abc1c52644cc67e57b Mon Sep 17 00:00:00 2001 From: Doctorwu Date: Sat, 6 Jan 2024 00:39:07 +0800 Subject: [PATCH 2/2] fix(runtime-core): add test suit --- .../runtime-core/__tests__/rendererFragment.spec.ts | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/packages/runtime-core/__tests__/rendererFragment.spec.ts b/packages/runtime-core/__tests__/rendererFragment.spec.ts index a8299ef93df..5f1e869366f 100644 --- a/packages/runtime-core/__tests__/rendererFragment.spec.ts +++ b/packages/runtime-core/__tests__/rendererFragment.spec.ts @@ -351,4 +351,16 @@ describe('renderer: fragment', () => { render(renderFn(['two', 'one']), root) expect(serializeInner(root)).toBe(`text
two
text
one
`) }) + + // #10007 + test('empty fragment', () => { + const root = nodeOps.createElement('div') + + const renderFn = () => { + return openBlock(true), createBlock(Fragment, null) + } + + render(renderFn(), root) + expect(serializeInner(root)).toBe('') + }) })