Просмотр исходного кода

fix(runtime-core): ensure mergeProps skips undefined event handlers (#5299)

fix #5296
Thorsten Lünborg 4 лет назад
Родитель
Сommit
c35ec47d73

+ 4 - 0
packages/runtime-core/__tests__/vnode.spec.ts

@@ -446,6 +446,10 @@ describe('vnode', () => {
         onClick: [clickHandler1, clickHandler2],
         onFocus: focusHandler2
       })
+      let props3: Data = { onClick: undefined }
+      expect(mergeProps(props1, props3)).toMatchObject({
+        onClick: clickHandler1
+      })
     })
 
     test('default', () => {

+ 1 - 0
packages/runtime-core/src/vnode.ts

@@ -798,6 +798,7 @@ export function mergeProps(...args: (Data & VNodeProps)[]) {
         const existing = ret[key]
         const incoming = toMerge[key]
         if (
+          incoming &&
           existing !== incoming &&
           !(isArray(existing) && existing.includes(incoming))
         ) {

+ 1 - 1
packages/runtime-dom/src/modules/events.ts

@@ -141,7 +141,7 @@ function patchStopImmediatePropagation(
       originalStop.call(e)
       ;(e as any)._stopped = true
     }
-    return value.map(fn => (e: Event) => !(e as any)._stopped && fn(e))
+    return value.map(fn => (e: Event) => !(e as any)._stopped && fn && fn(e))
   } else {
     return value
   }