작성
·
158
0
선생님 비슷한 질문인데 궁금점이 해결이 안되서 여쭤봅니다
useEffect( () => { const listener = (event) => { console.log('ref', ref) if (!ref.current || ref.current.contains(event.target)) { return; } handler(); }; document.addEventListener("mousedown", listener); return () => { document.removeEventListener("mousedown", listener); }; }, []);
마우스다운이랑 클릭이랑 다른점은 배웠는데
모달창 밖을 클릭하는데 왜안되는지 모르겠습니다
click 이 mousedown이랑 mouseup 두가지 행위가 아닌지..
모르겠네요 ㅠ
답변 1
0
안녕하세요!
레드님
제가 직접 click으로 변경해서 해봤는데 잘되는 것 같은데 안 되나요 ?
export default function useOnClickOutside(ref, handler) {
useEffect(
() => {
const listener = (event) => {
if (!ref.current || ref.current.contains(event.target)) {
return;
}
handler(event);
};
document.addEventListener("click", listener);
document.addEventListener("touchstart", listener);
return () => {
document.removeEventListener("click", listener);
document.removeEventListener("touchstart", listener);
};
},
[ref, handler]
);
}
이렇게 해서 해보니 잘되는 것 같습니다 ~