Skip to content

useEventListener

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

签名

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

基本用法

关键行为

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

注意事项

  • 只有当目标对象存在 addEventListener 时才会绑定监听器,空目标会被直接跳过。
  • 如果目标节点来自 ref,传入 ref.current 即可,并接受它在首次渲染时可能为空。