Skip to content

Instantly share code, notes, and snippets.

@tjinlag
Created April 9, 2023 12:19
Show Gist options
  • Save tjinlag/453268accdcc102fbb4ae0e310401bc7 to your computer and use it in GitHub Desktop.
Save tjinlag/453268accdcc102fbb4ae0e310401bc7 to your computer and use it in GitHub Desktop.
React Custom Hook: 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])
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment