Category | Browser |
---|---|
Export Size | 467 B |
Last Changed | last week |
Use EventListener with ease. Register using addEventListener on mounted, and removeEventListener automatically on unmounted.
import { useEventListener } from '@vueuse/core' useEventListener(document, 'visibilitychange', (evt) => { console.log(evt) })
You can also pass a ref as the event target, useEventListener
will unregister the previous event and register the new one when you change the target.
import { useEventListener } from '@vueuse/core' const element = ref<HTMLDivElement>() useEventListener(element, 'keydown', (e) => { console.log(e.key) })
<template> <div v-if="cond" ref="element">Div1</div> <div v-else ref="element">Div2</div> </template>
You can also call the returned to unregister the listener.
import { useEventListener } from '@vueuse/core' const cleanup = useEventListener(document, 'keydown', (e) => { console.log(e.key) }) cleanup() // This will unregister the listener.
interface InferEventTarget<Events> { addEventListener(event: Events, fn?: any, options?: any): any removeEventListener(event: Events, fn?: any, options?: any): any } export type WindowEventName = keyof WindowEventMap export type DocumentEventName = keyof DocumentEventMap export interface GeneralEventListener<E = Event> { (evt: E): void } /** * Register using addEventListener on mounted, and removeEventListener automatically on unmounted. * * Overload 1: Omitted Window target * * @see https://vueuse.org/useEventListener * @param event * @param listener * @param options */ export declare function useEventListener<E extends keyof WindowEventMap>( event: Arrayable<E>, listener: Arrayable<(this: Window, ev: WindowEventMap[E]) => any>, options?: MaybeRefOrGetter<boolean | AddEventListenerOptions> ): Fn /** * Register using addEventListener on mounted, and removeEventListener automatically on unmounted. * * Overload 2: Explicitly Window target * * @see https://vueuse.org/useEventListener * @param target * @param event * @param listener * @param options */ export declare function useEventListener<E extends keyof WindowEventMap>( target: Window, event: Arrayable<E>, listener: Arrayable<(this: Window, ev: WindowEventMap[E]) => any>, options?: MaybeRefOrGetter<boolean | AddEventListenerOptions> ): Fn /** * Register using addEventListener on mounted, and removeEventListener automatically on unmounted. * * Overload 3: Explicitly Document target * * @see https://vueuse.org/useEventListener * @param target * @param event * @param listener * @param options */ export declare function useEventListener<E extends keyof DocumentEventMap>( target: DocumentOrShadowRoot, event: Arrayable<E>, listener: Arrayable<(this: Document, ev: DocumentEventMap[E]) => any>, options?: MaybeRefOrGetter<boolean | AddEventListenerOptions> ): Fn /** * Register using addEventListener on mounted, and removeEventListener automatically on unmounted. * * Overload 4: Custom event target with event type infer * * @see https://vueuse.org/useEventListener * @param target * @param event * @param listener * @param options */ export declare function useEventListener< Names extends string, EventType = Event >( target: InferEventTarget<Names>, event: Arrayable<Names>, listener: Arrayable<GeneralEventListener<EventType>>, options?: MaybeRefOrGetter<boolean | AddEventListenerOptions> ): Fn /** * Register using addEventListener on mounted, and removeEventListener automatically on unmounted. * * Overload 5: Custom event target fallback * * @see https://vueuse.org/useEventListener * @param target * @param event * @param listener * @param options */ export declare function useEventListener<EventType = Event>( target: MaybeRefOrGetter<EventTarget | null | undefined>, event: Arrayable<string>, listener: Arrayable<GeneralEventListener<EventType>>, options?: MaybeRefOrGetter<boolean | AddEventListenerOptions> ): Fn
© 2019-present Anthony Fu
Licensed under the MIT License.
https://vueuse.org/core/useEventListener/