跳到主要内容

useEventListener

import { useEffect, useRef } from "react"

export default function useEventListener(
eventType,
callback,
element = window
) {
const callbackRef = useRef(callback)

useEffect(() => {
callbackRef.current = callback
}, [callback])

useEffect(() => {
if (element == null) return
const handler = e => callbackRef.current(e)
element.addEventListener(eventType, handler)

return () => element.removeEventListener(eventType, handler)
}, [eventType, element])
}

介绍

一个封装了处理事件监听的钩子函数,参数为事件类型和和一个回调函数。

使用方法

实时编辑器
function EventListenerComponent() {
  const [key, setKey] = useState("")
  useEventListener("keydown", e => {
    setKey(e.key)
  })

  return <div>你按下了按键: {key}</div>
}
结果
Loading...

随意按下键盘上的按键,观察以上的输出结果。