Skip to content

Instantly share code, notes, and snippets.

@vczb
Created December 3, 2021 01:23
Show Gist options
  • Select an option

  • Save vczb/15bd6cf1a0f8e7ba8c14b68f29ab8403 to your computer and use it in GitHub Desktop.

Select an option

Save vczb/15bd6cf1a0f8e7ba8c14b68f29ab8403 to your computer and use it in GitHub Desktop.
click away listener to react with typescript
import { useEffect } from 'react'
type Props = {
ref: React.RefObject<HTMLElement>
handleClickAway: () => void
}
const useClickAwayListener = (ref: any, handleClickAway: any) => {
const handleClick = (event: MouseEvent) => {
if (!ref?.current?.contains(event?.target)) {
handleClickAway()
}
}
useEffect(() => {
document.addEventListener('click', handleClick)
return () => document.removeEventListener('click', handleClick)
}, [])
}
export default useClickAwayListener
@vczb
Copy link
Author

vczb commented Dec 3, 2021

  const handleClick = () => {
    console.log('ok')
  }

  useClickAwayListener(ref, handleClick)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment