회사 서비스 내 특정 이벤트를 외부에서 트리거하는 로직 관련하여 고민하고 해결한 경험들을 토대로 주요 개념인,
Event
와CustomEvent
인터페이스를 정리하였다.
우리 서비스를 고객사 프로젝트에 script로 삽입하여 호출하는 방식으로 구현되어 있는데,
서비스 자체 이벤트들은 자체 내부적으로만 트리거 되기 때문에, 외부에서 해당 이벤트를 유발할 수 없도록 구현되어 있었다.
커스텀 이벤트는 Event
또는 CustomEvent
인터페이스 생성자 함수를 통해 생성될 수 있다.
const myEvent = new Event("myCustomEvent")
document.addEventListener("myCustomEvent", e => {
console.log(e)
})
// dispatch를 통해 이벤트를 트리거(동작)시킨다.
document.dispatchEvent(myEvent)
Event
의 속성을 상속한다.detail
프로퍼티를 추가하여 해당 detail
정보를 이벤트에 전달할 수 있다. detail
에 명시한다.const test = new CustomEvent("test", {
detail: {
name : "홍길동"
},
}
);
document.addEventListener("test", (e) => {
console.log(e.detail.name) // 홍길동
})
document.dispatchEvent(test)
Event
와 CustomEvent
의 공통 속성 및 요소들type
: 이벤트 명 (string)options
: bubbles, cancelable, composed, detail(CustomEvent만 제공) 등 세부 속성을 정의 (object)const test = new CustomEvent(type[, options]);
);
bubbles : true