개인공부

이벤트 버블링

여유로운 프론트엔드 개발자 2024. 9. 17. 13:15

1. 이벤트 버블링이란?

 이벤트 버블링(event bubbling)이란 웹 개발에서 이벤트가 발생했을 때, 그 이벤트가 가장 구체적인 요소(예: 버튼)에서 시작해 상위 요소들로 점차 전파되는 현상이다. 예를 들어, HTML 문서에서 특정 버튼을 클릭하면 그 버튼에 속한 상위 요소들(예: <div>, <body>)로 이벤트가 전달된다.

 

  const onClickDiv = () => {
    console.log("div");
  };

  const onClickBtn = () => {
    console.log("btn");
  };

  return (
    <div onClick={onClickDiv}>
    	<button onClick={onClickBtn}>이벤트 버블링</button>
    </div>
  );

 

실행 화면

위 이미지와 같이 버튼을 클릭하면 버튼의 상위 이벤트인 div 태그의 onClick 함수도 실행됨을 알 수 있다.

 

2. event.stopPropagation() 

 이벤트가 DOM 트리에서 버블링되는 것을 방지하여 부모 핸들러가 이벤트에 대해 알림을 받지 못하도록 한다. 인수를 허용하지 않는다.

 

  const onClickDiv = () => {
    console.log("div");
  };

  const onClickBtn = (event: React.MouseEvent<HTMLDivElement>) => {
    event.stopPropagation();
    console.log("btn");
  };

  return (
    <div onClick={onClickDiv}>
      <button onClick={() => {onClickBtn}}>
        이벤트 버블링
      </button>
    </div>
  )

 

위 코드와 같이 event.stopPropagation()을 호출하면 버블링을 방지할 수 있다. 이 때 콘솔엔 btn만 남는다.

'개인공부' 카테고리의 다른 글

React-Query  (0) 2024.11.10
Jotai 상태관리 라이브러리  (0) 2024.10.27
SEO, SSR  (4) 2024.09.04
npm, yarn  (0) 2024.09.04
웹 표준, 접근성, 크로스 브라우징  (0) 2024.09.03