Skip to content

useEventListener

以更稳定的方式绑定和清理事件监听器。

签名

ts
function useEventListener(
    target: ResolvableTarget<Window | Document | HTMLElement | Element | EventTarget>,
    eventName: string,
    listener: (...args: unknown[]) => void,
    options?: AddEventListenerOptions,
): void;

基本用法

关键行为

  • target 可以是 WindowDocumentHTMLElementElement、通用 EventTarget、React ref、nullundefined
  • 监听函数变化时不会重复绑定事件,内部会通过最新 ref 调用新版本的 listener。
  • options.captureoptions.onceoptions.passiveoptions.signal 变化时,会重新绑定监听器。

注意事项

  • 只有当目标对象存在 addEventListener 时才会绑定监听器,空目标会被直接跳过。
  • 如果目标节点来自 ref,可以直接传入 ref 对象;内部会在副作用执行时解析当前节点。