Skip to content

Instantly share code, notes, and snippets.

@worc
Created May 6, 2019 16:41
Show Gist options
  • Save worc/7ff1e76598c82979a1c2d2df8cefd986 to your computer and use it in GitHub Desktop.
Save worc/7ff1e76598c82979a1c2d2df8cefd986 to your computer and use it in GitHub Desktop.
a react hook for binding an event to a click outside an element
import { useEffect } from 'react'
function clickAwayListener (elementId, callback) {
return event => {
const outsideClick = !document.getElementById(elementId).contains(event.target)
if (outsideClick) {
callback()
}
}
}
export function useClickAway (elementId, callback) {
useEffect(() => {
document.addEventListener('click', clickAwayListener(elementId, callback))
return document.removeEventListener('click', clickAwayListener(elementId, callback))
}, [])
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment