]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
fix(runtime-core): ensure mergeProps skips undefined event handlers (#5299)
authorThorsten Lünborg <t.luenborg@googlemail.com>
Fri, 21 Jan 2022 06:13:29 +0000 (07:13 +0100)
committerGitHub <noreply@github.com>
Fri, 21 Jan 2022 06:13:29 +0000 (01:13 -0500)
fix #5296

packages/runtime-core/__tests__/vnode.spec.ts
packages/runtime-core/src/vnode.ts
packages/runtime-dom/src/modules/events.ts

index a8979e811dc940be705ead8824ed6e733d38abe2..fdd23797b101b21d63421d556687106a2033a486 100644 (file)
@@ -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', () => {
index 0db4005c8779f584e2e33adb9d17e0af095dd9b9..059d8ba3a29252deb02ab4284346c2d4ff05a645 100644 (file)
@@ -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))
         ) {
index 7172e3efdd24d2026fec8f30b277146333c33400..51544dedf4987aa2544185c339a2cddb17866fd2 100644 (file)
@@ -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
   }