[html] 웹 컴포넌트 이벤트 처리
이번에는 HTML 웹 컴포넌트에서 이벤트를 처리하는 방법에 대해 알아보겠습니다. 웹 컴포넌트는 독립적으로 스타일링되고 동작하는 웹 요소입니다. 이러한 웹 컴포넌트는 사용하기 편리하며 재사용성이 뛰어나다는 장점이 있습니다.
1. 이벤트 핸들링
HTML 웹 컴포넌트에서 이벤트를 처리하는 방법은 일반적인 HTML 요소와 동일합니다.
class CustomButton extends HTMLElement {
constructor() {
super();
this.addEventListener('click', this.handleClick);
}
handleClick(event) {
alert('버튼이 클릭되었습니다.');
}
}
customElements.define('custom-button', CustomButton);
위 예제에서는 CustomButton
클래스의 생성자에서 addEventListener
메소드를 사용하여 ‘click’ 이벤트에 handleClick
메소드를 연결했습니다.
2. 커스텀 이벤트
웹 컴포넌트에서 사용자 정의 이벤트를 만들고 발생시킬 수 있습니다.
class CommunicationBox extends HTMLElement {
constructor() {
super();
}
connectedCallback() {
this.addEventListener('message', this.handleMessage);
}
handleMessage(event) {
alert(`메시지 수신: ${event.detail}`);
}
sendMessage(message) {
const event = new CustomEvent('message', { detail: message });
this.dispatchEvent(event);
}
}
customElements.define('communication-box', CommunicationBox);
위 예제에서 sendMessage
메소드는 CustomEvent
를 생성하고 dispatchEvent
를 사용하여 ‘message’ 커스텀 이벤트를 발생시킵니다.
3. 이벤트 위임
웹 컴포넌트에서 이벤트 위임을 통해 여러 하위 요소의 이벤트를 하나의 상위 요소에서 처리할 수 있습니다.
<custom-list>
<custom-item>아이템 1</custom-item>
<custom-item>아이템 2</custom-item>
<custom-item>아이템 3</custom-item>
</custom-list>
class CustomList extends HTMLElement {
constructor() {
super();
}
connectedCallback() {
this.addEventListener('click', this.handleClick);
}
handleClick(event) {
if (event.target.tagName === 'CUSTOM-ITEM') {
alert(`선택된 아이템: ${event.target.textContent}`);
}
}
}
customElements.define('custom-list', CustomList);
class CustomItem extends HTMLElement {
constructor() {
super();
}
}
customElements.define('custom-item', CustomItem);
위 예제에서 부모 요소인 CustomList
에서 하위 요소인 CustomItem
의 클릭 이벤트를 처리하고 있습니다.
HTML 웹 컴포넌트에서 이벤트 처리에 대해 간단히 살펴보았습니다. 웹 컴포넌트의 재사용성과 모듈화를 고려하여 이벤트 처리 방식을 설계하는 것이 중요합니다.