useEventListener
以更稳定的方式绑定和清理事件监听器。
签名
ts
function useEventListener(
target: Window | Document | HTMLElement | Element | EventTarget | null | undefined,
eventName: string,
listener: (...args: unknown[]) => void,
options?: AddEventListenerOptions,
): void;基本用法
关键行为
target可以是Window、Document、HTMLElement、Element、通用EventTarget,也可以是null或undefined。- 监听函数变化时不会重复绑定事件,内部会通过最新 ref 调用新版本的 listener。
- 当
options.capture、options.once、options.passive或options.signal变化时,会重新绑定监听器。
注意事项
- 只有当目标对象存在
addEventListener时才会绑定监听器,空目标会被直接跳过。 - 如果目标节点来自 ref,传入
ref.current即可,并接受它在首次渲染时可能为空。