From 54a0e93c276f95a35b3bd6510a7f52d967fd3b7f Mon Sep 17 00:00:00 2001 From: djy0 Date: Tue, 10 Mar 2020 04:03:57 +0800 Subject: [PATCH] fix(runtime-core): should allow empty string and 0 as valid vnode key (#807) --- packages/runtime-core/__tests__/vnode.spec.ts | 8 ++++++++ packages/runtime-core/src/vnode.ts | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/packages/runtime-core/__tests__/vnode.spec.ts b/packages/runtime-core/__tests__/vnode.spec.ts index 1a500ac7c8e..8895938182f 100644 --- a/packages/runtime-core/__tests__/vnode.spec.ts +++ b/packages/runtime-core/__tests__/vnode.spec.ts @@ -38,6 +38,14 @@ describe('vnode', () => { expect(vnode.props).toBe(null) }) + test('valid vnode keys', () => { + let vnode + for (const key in ['', '1', -1, 0, 1, null]) { + vnode = createVNode('div', { key }) + expect(vnode.key).toBe(key) + } + }) + describe('class normalization', () => { test('string', () => { const vnode = createVNode('p', { class: 'foo baz' }) diff --git a/packages/runtime-core/src/vnode.ts b/packages/runtime-core/src/vnode.ts index 568052a4b07..46089491191 100644 --- a/packages/runtime-core/src/vnode.ts +++ b/packages/runtime-core/src/vnode.ts @@ -251,7 +251,7 @@ export function createVNode( _isVNode: true, type, props, - key: (props !== null && props.key) || null, + key: props !== null && props.key !== undefined ? props.key : null, ref: (props !== null && props.ref) || null, scopeId: currentScopeId, children: null,