이벤트 버블링 막기 stopPropagation

Tony·2023년 3월 10일
0

javascript

목록 보기
50/61

window의 클릭 이벤트에 메뉴를 닫는 콜백을 달아놓고

특정 버튼을 클릭 시 메뉴가 열릴 때

이벤트 버블링으로 인해 window에 설정된 이벤트가 같이 발생되어서 메뉴가 열리지 않는 문제가 발생한다

이벤트 버블링을 막아서 해결할 수 있다

const [focusedId, setFocusedId] = useState<string>();

const resetFocusedId = useCallback(() => {
    setFocusedId(undefined);
  }, []);

const _setFocusedId = useCallback((e: React.MouseEvent, id: string) => {
    e.stopPropagation(); // 이벤트 버블링 방지
    setFocusedId(id);
  }, []);

useCallback(() => {
  window.addEventListener("click", resetFocusedId);
  return () => {
    window.removeEventListener("click", resetFocusedId);
  };
}, [resetFocusedId]);
profile
움직이는 만큼 행복해진다

0개의 댓글