diff --git a/packages/core/src/utils/createExtendedEventHook.ts b/packages/core/src/utils/createExtendedEventHook.ts index 15af9d07..cec9925e 100644 --- a/packages/core/src/utils/createExtendedEventHook.ts +++ b/packages/core/src/utils/createExtendedEventHook.ts @@ -10,12 +10,15 @@ export interface EventHookExtended extends EventHook { hasListeners: () => boolean } -export function createExtendedEventHook(defaultHandler: (param: T) => void = () => {}): EventHookExtended { +export function createExtendedEventHook(defaultHandler?: (param: T) => void): EventHookExtended { const fns = new Set<(param: T) => void>() + let hasDefaultHandler = false + const hasListeners = () => fns.size > 0 if (defaultHandler) { + hasDefaultHandler = true fns.add(defaultHandler) } @@ -24,7 +27,7 @@ export function createExtendedEventHook(defaultHandler: (param: T) => v } const on = (fn: (param: T) => void) => { - if (fns.has(defaultHandler)) { + if (defaultHandler && hasDefaultHandler) { fns.delete(defaultHandler) }