--- category: Utilities --- # createEventHook Utility for creating event hooks ## Usage Creating a function that uses `createEventHook` ```ts import { createEventHook } from '@vueuse/core' export function useMyFetch(url) { const fetchResult = createEventHook() const fetchError = createEventHook() fetch(url) .then(result => fetchResult.trigger(result)) .catch(error => fetchError.trigger(error.message)) return { onResult: fetchResult.on, onError: fetchError.on, } } ``` Using a function that uses `createEventHook` ```vue ``` ## Type Declarations ```ts /** * 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 */ type Callback = IsAny extends true ? (...param: any) => void : [T] extends [void] ? (...param: unknown[]) => void : [T] extends [any[]] ? (...param: T) => void : (...param: [T, ...unknown[]]) => void export type EventHookOn = (fn: Callback) => { off: () => void } export type EventHookOff = (fn: Callback) => void export type EventHookTrigger = ( ...param: Parameters> ) => Promise export interface EventHook { on: EventHookOn off: EventHookOff trigger: EventHookTrigger clear: () => void } export type EventHookReturn = EventHook /** * Utility for creating event hooks * * @see https://vueuse.org/createEventHook * * @__NO_SIDE_EFFECTS__ */ export declare function createEventHook(): EventHookReturn ```