Skip to content
On this page

useEventListener

优雅的使用 addEventListener。

代码演示

基础用法

API

javascript
function useEventListener<K extends keyof HTMLElementEventMap>(
    eventName: K,
    listener: (ev: HTMLElementEventMap[K]) => void,
    options?: Options<HTMLElement>,
): void;


function useEventListener<K extends keyof ElementEventMap>(
    eventName: K,
    listener: (ev: ElementEventMap[K]) => void,
    options?: Options<Element>,
): void;


function useEventListener<K extends keyof DocumentEventMap>(
    eventName: K,
    listener: (ev: DocumentEventMap[K]) => void,
    options?: Options<Document>,
): void;


function useEventListener<K extends keyof WindowEventMap>(
    eventName: K,
    listener: (ev: WindowEventMap[K]) => void,
    options?: Options<Window>,
): void;


function useEventListener(eventName: string, listener: Noop, options: Options): void;
function useEventListener<K extends keyof HTMLElementEventMap>(
    eventName: K,
    listener: (ev: HTMLElementEventMap[K]) => void,
    options?: Options<HTMLElement>,
): void;


function useEventListener<K extends keyof ElementEventMap>(
    eventName: K,
    listener: (ev: ElementEventMap[K]) => void,
    options?: Options<Element>,
): void;


function useEventListener<K extends keyof DocumentEventMap>(
    eventName: K,
    listener: (ev: DocumentEventMap[K]) => void,
    options?: Options<Document>,
): void;


function useEventListener<K extends keyof WindowEventMap>(
    eventName: K,
    listener: (ev: WindowEventMap[K]) => void,
    options?: Options<Window>,
): void;


function useEventListener(eventName: string, listener: Noop, options: Options): void;

Params

参数说明类型默认值
eventName必填,事件名称 string-
listener必填,处理函数 (ev: Event) => void-
options可选,详见下面的 UseEventListenerOptionsUseEventListenerOptions-

UseEventListenerOptions

参数说明类型默认值
targetDOM 节点或者 ref(() => TargetValue<T>) | TargetValue<T> | Ref<TargetValue<T>>window
capture可选,listener 会在该类型的事件捕获阶段传播到该 EventTarget 时触发booleanfalse
once可选,listener 在添加之后最多只调用一次。如果是 true,listener 会在其被调用之后自动移除。booleanfalse
passive可选,设置为 true 时,表示 listener 永远不会调用 preventDefault() 。如果 listener 仍然调用了这个函数,客户端将会忽略它并抛出一个控制台警告booleanfalse