Front-End

vsoghlv@naver.com

팝업영역 제외하고 외부 클릭시 팝업닫기

이벤트 전파로 인해 외부영역이 아닌 팝업창을 클릭해도 팝업창이 닫히는 문제가 발생했다. stopPropagation() 을 사용하려고 했지만 각 자식엘리먼트에서 따로 막아줘야 하는 것 같아 다른 방법을 사용했다.

  const togglePop: MouseEventHandler<HTMLElement> = (e): void => {
    const target = e.target as HTMLElement
    if (target !== e.currentTarget) {
      return
    }
    setOpen(!open)
  }

target 과 currentTarget 은 조금 차이가 있는데 currentTarget 은 이벤트가 처음 발생하는 곳, 즉 이벤트를 설정해놓은 곳을 반환하고, target 은 이벤트가 위임되어 발생하는 위치, 내가 클릭한 요소를 반환한다.