ref: React.MutableRefObject<any>,
handler: (event?: MouseEvent | TouchEvent) => void
) => {
React.useEffect(() => {
const listener = (event: MouseEvent | TouchEvent) => {
// Do nothing if clicking ref's element or descendent elements
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]);
};
но оно мне не подошло
потому что у меня окно с помощью цсс сворачивалось в зависимости от класса
если без анимации, то подойдет
{flag && <Component />}
вот собственно откуда находил решение https://usehooks.com/useOnClickOutside/ тут получше пример использования
Обсуждают сегодня