Skip to content

Commit c35ec47

Browse files
authored
fix(runtime-core): ensure mergeProps skips undefined event handlers (#5299)
fix #5296
1 parent 2f91872 commit c35ec47

File tree

3 files changed

+6
-1
lines changed

3 files changed

+6
-1
lines changed

packages/runtime-core/__tests__/vnode.spec.ts

+4
Original file line numberDiff line numberDiff line change
@@ -446,6 +446,10 @@ describe('vnode', () => {
446446
onClick: [clickHandler1, clickHandler2],
447447
onFocus: focusHandler2
448448
})
449+
let props3: Data = { onClick: undefined }
450+
expect(mergeProps(props1, props3)).toMatchObject({
451+
onClick: clickHandler1
452+
})
449453
})
450454

451455
test('default', () => {

packages/runtime-core/src/vnode.ts

+1
Original file line numberDiff line numberDiff line change
@@ -798,6 +798,7 @@ export function mergeProps(...args: (Data & VNodeProps)[]) {
798798
const existing = ret[key]
799799
const incoming = toMerge[key]
800800
if (
801+
incoming &&
801802
existing !== incoming &&
802803
!(isArray(existing) && existing.includes(incoming))
803804
) {

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ function patchStopImmediatePropagation(
141141
originalStop.call(e)
142142
;(e as any)._stopped = true
143143
}
144-
return value.map(fn => (e: Event) => !(e as any)._stopped && fn(e))
144+
return value.map(fn => (e: Event) => !(e as any)._stopped && fn && fn(e))
145145
} else {
146146
return value
147147
}

0 commit comments

Comments
 (0)