From fdd4dbf063c366d8c2fc369c01580ec07908c3e8 Mon Sep 17 00:00:00 2001 From: Amirreza Zarkesh <56929398+ARZarkesh@users.noreply.github.com> Date: Fri, 16 Dec 2022 19:06:16 +0330 Subject: [PATCH] feat(createEeventHook): auto dispose (#2518) Co-authored-by: Anthony Fu --- packages/shared/createEventHook/index.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/shared/createEventHook/index.ts b/packages/shared/createEventHook/index.ts index 2ad7074b93b..64a21f35358 100644 --- a/packages/shared/createEventHook/index.ts +++ b/packages/shared/createEventHook/index.ts @@ -2,6 +2,7 @@ * The source code for this function was inspired by vue-apollo's `useEventHook` util * https://github.com/vuejs/vue-apollo/blob/v4/packages/vue-apollo-composable/src/util/useEventHook.ts */ +import { tryOnScopeDispose } from '@vueuse/core' export type EventHookOn = (fn: (param: T) => void) => { off: () => void } export type EventHookOff = (fn: (param: T) => void) => void @@ -30,6 +31,10 @@ export function createEventHook(): EventHook { const on = (fn: (param: T) => void) => { fns.push(fn) + tryOnScopeDispose(() => { + off(fn) + }) + return { off: () => off(fn), }