bkdragon's log

React 이벤트 위임 본문

React

React 이벤트 위임

bkdragon 2023. 7. 30. 18:17

이벤트 위임은 자식 요소가 여러 개 일 때 부모 요소에만 이벤트를 적용하면 버블링에 의해 이벤트가 실행되는 것을 이용하는 기법이다. 핸들러를 여러개 사용하지 않아도 되어 메모리를 절약하거나 요소가 추가되거나 제거되었을 때 별로도 이벤트를 추가하거나 제거해야하는 필요성이 없는 장점을 지닌다.
 
근데 React에서는 이벤트를 빌드 단계에서 Root Element로 위임시킨다고 한다. 즉 개발자가 이벤트 위임 패턴을 사용해서 코드를 작성해도 성능적인 이점을 가져갈 수 없는 것이다. Root Element로 모든 이벤트가 위임된다는 것은  React에서는 이벤트 발생 단계 중 캡쳐링 단계가 없다는 것이다. 버블링은 어떨까?
 

<footer
    onClick={() => alert('footer')}
    style={{ width: '100%', border: '1px solid black' }}
  >
    <div
      onClick={() => alert('footer 안에 div')}
      style={{ width: '100px', border: '1px solid black' }}
    >
      footer안에 div
    </div>
</footer>

 
이렇게 코드를 작성하고 div를 클릭하면 footer의 이벤트도 발생한다. 즉 버블링 과정은 정상적으로 일어난다. 이벤트 위임이 일어나면서 이벤트 간의 관계를 알고 있다고 추측할 수 있다.
 
 

'React' 카테고리의 다른 글

useEffect 친해지기 1  (0) 2023.08.09
반복되는 요소 렌더링 최적화 하기  (0) 2023.08.05
클로저와 useState  (0) 2023.07.10
[React] 성능 최적화  (0) 2023.06.29
[React] Virtual DOM  (0) 2023.06.25