@~crazy/eventmanager
v0.0.3
Published
事件管理器
Downloads
29
Readme
EventManager
- 事件管理器
使用方法
- npm i @~crazy/eventmanager
import { EventManager } from '@~crazy/eventmanager';
interface EventMap {
click: (target: HTMLElement)=> void;
(event: 'click', target: HTMLElement): void;
}
const em = new EventManager<EventMap>();
em.addEventListener('click', target => {
console.log(target);
});
em.dispatchEvent('click', document.body); // body
继承
class Atom extends EventManager<{
$beforeCreate: () => void;
(event: '$beforeCreate'): void;
$created: () => void;
(event: '$created'): void;
$beforeDestroy: () => void;
(event: '$beforeDestroy'): void;
$destroyed: () => void;
(event: '$destroyed'): void;
}> {
/**
* 初始化
*/
init = true;
/**
* 已销毁
*/
isDestroy = false;
/**
* 安装
*/
setup() {
this.dispatchEvent('$beforeCreate');
this.init = false;
this.dispatchEvent('$created');
}
/**
* 销毁
*/
destroy() {
this.dispatchEvent('$beforeDestroy');
this.isDestroy = true;
this.dispatchEvent();
}
}
const atom = new Atom();
atom.addEventListener('$beforeCreate', () => {
console.log('创建前');
});
atom.addEventListener('$created', () => {
console.log('创建完成', atom.init, atom.isDestroy);
});
atom.addEventListener('$beforeDestroy', () => {
console.log('销毁前');
});
atom.addEventListener('$destroyed', () => {
console.log('销毁完成', atom.isDestroy);
});
atom.setup();
// 创建前
// 创建完成 false false
atom.destroy();
// 销毁前
// 销毁完成 true