crypto-converter/src/hooks/useOnClickOutside.tsx
2023-08-09 16:00:45 +03:00

22 lines
617 B
TypeScript

import { useEffect } from 'react'
export default function useOnClickOutside(
ref: React.RefObject<any>,
handler: Function
) {
useEffect(() => {
const listener = (event: MouseEvent | TouchEvent) => {
if (!ref.current || ref.current.contains(event.target)) {
return
}
handler(event)
}
document.addEventListener('mousedown', listener)
document.addEventListener('touchstart', listener)
return () => {
document.removeEventListener('mousedown', listener)
document.removeEventListener('touchstart', listener)
}
}, [ref, handler])
}