From 18b687e46a68854c35fc2f0e75f101d59b0804cd Mon Sep 17 00:00:00 2001 From: sealice <15445553+sealice@users.noreply.github.com> Date: Mon, 4 Jan 2021 10:02:11 +0800 Subject: [PATCH] Add new features of emitter.off. Fixes #123 If mitt.off provides only the event, remove all listeners for that event. --- src/index.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/index.ts b/src/index.ts index ae85607..394a5ed 100644 --- a/src/index.ts +++ b/src/index.ts @@ -18,7 +18,7 @@ export interface Emitter { on(type: EventType, handler: Handler): void; on(type: '*', handler: WildcardHandler): void; - off(type: EventType, handler: Handler): void; + off(type: EventType, handler?: Handler): void; off(type: '*', handler: WildcardHandler): void; emit(type: EventType, event?: T): void; @@ -60,10 +60,14 @@ export default function mitt(all?: EventHandlerMap): Emitter { * @param {Function} handler Handler function to remove * @memberOf mitt */ - off(type: EventType, handler: Handler) { + off(type: EventType, handler?: Handler) { const handlers = all.get(type); if (handlers) { + if(handler){ handlers.splice(handlers.indexOf(handler) >>> 0, 1); + } else { + all.delete(type); + } } },