[javascript] 웹 컴포넌트에서 이벤트 처리 방법

웹 컴포넌트는 웹 개발에서 재사용 가능한 UI 요소를 만들기 위한 표준 방법입니다. 이벤트 처리는 웹 컴포넌트에서 상호 작용하는 데 중요한 부분이며, 이 문서에서는 웹 컴포넌트에서 이벤트를 처리하는 방법에 대해 알아보겠습니다.

이벤트 핸들링

1. addEventListener 사용하기

addEventListener 메서드를 사용하여 웹 컴포넌트 내부에서 이벤트를 처리할 수 있습니다. 이 메서드를 사용하면 원하는 이벤트에 대한 콜백 함수를 등록할 수 있습니다. 다음은 간단한 예제입니다.

class MyComponent extends HTMLElement {
  constructor() {
    super();
  }

  connectedCallback() {
    this.addEventListener('click', this.handleClick);
  }

  handleClick(event) {
    // 이벤트 처리 로직 작성
  }
}

위의 예제에서는 connectedCallback 메서드 내부에서 click 이벤트에 대한 handleClick 콜백 함수를 등록합니다. 이제 웹 컴포넌트가 클릭 이벤트를 받으면 handleClick 함수가 실행됩니다. 이 콜백 함수에서는 클릭 이벤트를 처리하는 로직을 작성하면 됩니다.

2. custom 이벤트 사용하기

때로는 웹 컴포넌트 내에서 발생한 이벤트를 다른 컴포넌트에서 사용해야 할 때가 있습니다. 이 경우 custom 이벤트를 사용하여 해결할 수 있습니다. 다음은 custom 이벤트를 사용하는 예제입니다.

class MyComponent extends HTMLElement {
  constructor() {
    super();
  }

  connectedCallback() {
    const event = new CustomEvent('myEvent', {
      detail: { data: 'Hello, World!' },
    });
    this.dispatchEvent(event);
  }
}

// 사용 예제
const myComponent = document.querySelector('my-component');
myComponent.addEventListener('myEvent', (event) => {
  console.log(event.detail.data); // 'Hello, World!'
});

위의 예제에서는 connectedCallback 메서드 내부에서 myEvent 이름의 custom 이벤트를 생성하고 dispatchEvent 메서드를 사용하여 이벤트를 발생시킵니다. 그리고 이벤트를 처리하기 위해 addEventListener 메서드를 사용하여 이벤트를 수신하는 로직을 작성합니다.

결론

웹 컴포넌트에서 이벤트 처리는 addEventListener 메서드를 사용하여 콜백 함수를 등록하거나 custom 이벤트를 사용하여 다른 컴포넌트와의 상호 작용을 가능하게 할 수 있습니다. 이러한 방법을 통해 웹 컴포넌트를 효율적으로 개발하고 활용할 수 있습니다.

참고 문서