인프런 커뮤니티 질문&답변

레드님의 프로필 이미지
레드

작성한 질문수

따라하며 배우는 리액트 A-Z[19버전 반영]

모달 창 외부 클릭 시 모달 닫게 만드는 Custom Hooks 생성

비슷한질문.. mousedown을 click으로 바꾸면 왜안되나요?

작성

·

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

John Ahn님의 프로필 이미지
John Ahn
지식공유자

안녕하세요!
레드님
제가 직접 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]
    );
}



이렇게 해서 해보니 잘되는 것 같습니다 ~

레드님의 프로필 이미지
레드

작성한 질문수

질문하기