[JavaScript] 자식 컴포넌트의 클릭 이벤트 (feat. event.stopPropagation())
Hi there~
다들 잘 지내고 계신가요??😃
저는 최근에 졸업작품을 마무리하고 프로젝트의 기능들을 하나씩 리팩토링하는 과정에 있습니다 :)

최근에 밋팀 메인페이지에 필터 기능을 구현하던 중 특이한 현상을 마주했습니다..! OMG..!!

제가 원하는 모습은 삭제버튼을 눌러도 드롭다운 창이 닫히지 않는 것이었어요!!
하지만,,, 닫혔죠?

구글링을 하던 중 저와 비슷한 상황을 겪으신 분을 발견했어요!!!
stopPropagation() 이라는 메서드를 통해서 해결할 수 있었습니다 😁
저의 코드는 현재 아래와 같은 구조를 띄고 있어요.
부모 컴포넌트의 wrapper에서 클릭 이벤트가 발생하면 창을 닫고 열도록 구현이 되어있고,
이 이벤트는 자식 컴포넌트들에게 전파가 되죠.

자식 컴포넌트 1에서는 아무런 문제가 없지만,
자식 컴포넌트 2에서는 클릭했을 때, 창이 닫히지 않도록 해야했어요!
이때, Event.stopPropagation() 메서드를 사용하면
현재 이벤트가 캡처링,버블링 단계에서 더 이상 전파되지 않도록 방지합니다.
그 결과

하지만, 역시 tradeoff가 있었습니다..

웹 서비스의 분석을 위해 거의 필수적으로 사용되는 웹 애널리틱스 도구에서는 종종 이벤트 버블링을 활용하여 이벤트를 감지하고 데이터를 수집하는데
stopPropagation을 사용하면 이벤트 버블링이 막혀 해당 도구가 클릭을 감지하지 못할 수 있는 문제가 생깁니다...!
아래의 참고자료를 바탕으로 리팩토링 단계에서 수정을 해봐야겠어요!!
참고자료
'Front-End > Javascript' 카테고리의 다른 글
[JavaScript] JS Heap 과 가비지 컬렉터 (1) | 2024.10.23 |
---|---|
[JavaScript] 한글 입력 시 이벤트가 두 번 호출되는 오류 (0) | 2024.01.27 |
[JavaScript] 함수 객체의 프로퍼티 (0) | 2024.01.26 |
[JavaScript] 함수는 왜 일급객체(First Class Object)일까? (0) | 2024.01.09 |
[JS] 생성자 함수에 의한 객체 생성 (0) | 2023.08.05 |