코딩
useRef 사용해서 컴포넌트 바깥을 클릭했을 때 컴포넌트가 닫히게 하기
KUROMI98
2024. 9. 26. 18:23
USEREF
import { useEffect, useRef } from 'react';
const handleDetailMenuClose = () => {
setMenus((prevMenus) =>
prevMenus.map((menu) => ({
...menu,
clicked: false,
}))
);
};
const appRef = useRef(null);
useEffect(() => {
const handleOutsideClick = (event) => {
if (appRef.current && !appRef.current.contains(event.target)) {
handleDetailMenuClose();
}
};
document.addEventListener('mousedown', handleOutsideClick);
return () => {
document.removeEventListener('mousedown', handleOutsideClick);
};
}, []);
...
return
<div ref={appRef}>
<DetailMenus menus={menus} />
</div>