js发起自定义事件CustomEvent

最近一个项目中需要模拟发起一个扫码枪事件进行测试,之前写react native调用DeviceEventEmitter这个api就可以了,然而在web中不太常用,最终在mdn中发现了这个构造方法CustomEvent

发起事件

用法

new CustomEvent(eventName, params);

示例

创建一个自定义事件

const event=new CustomEvent('mock-event');

传递参数

这里值得注意,需要把想要传递的参数包裹在一个包含detail属性的对象,否则传递的参数不会被挂载?(这里不太确定,我试过传idparams都不会生效)

function createEvent(params, eventName = 'mock-event') {
    return new CustomEvent(eventName, { detail: params });
}

const event = createEvent({ id: '0010' });

发起事件

调用dispatchEvent方法发起事件,传入你刚才创建的方法

window.dispatchEvent(event);

监听事件

 window.addEventListener('mock-event', ({ detail: { id } }) => {
            console.log('id',id) // 会在控制台打印0010
        });

在react中的应用

最好在componentDidMount中调用addEventListener监听事件,在componentWillUnmount中调用removeEventListener移除事件监听器。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 事件是一种异步编程的实现方式,本质上是程序各个组成部分之间的通信。DOM支持大量的事件,本节介绍DOM的事件编程。...
    许先生__阅读 4,489评论 0 3
  • Dom事件 事件是一种异步编程的实现方式,本质上是程序各个组成部分之间的通信。DOM支持大量的事件 (一) Eve...
    woow_wu7阅读 5,758评论 0 1
  • 事件是一种异步编程的实现方式,本质上是程序各个组成部分之间的通信。DOM支持大量的事件,本节介绍DOM的事件编程。...
    周花花啊阅读 3,738评论 0 3
  •   JavaScript 与 HTML 之间的交互是通过事件实现的。   事件,就是文档或浏览器窗口中发生的一些特...
    霜天晓阅读 8,867评论 1 11
  • 生命中总有一种真相, 会让你痛的猝不及防。 然后做出抉择, 再见, 亦或再也不见!
    蒹一葭阅读 1,144评论 0 0