Преглед изворни кода

fix(runtime-core): should allow empty string and 0 as valid vnode key (#807)

djy0 пре 6 година
родитељ
комит
54a0e93c27
2 измењених фајлова са 9 додато и 1 уклоњено
  1. 8 0
      packages/runtime-core/__tests__/vnode.spec.ts
  2. 1 1
      packages/runtime-core/src/vnode.ts

+ 8 - 0
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' })

+ 1 - 1
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,