js發起自定義事件CustomEvent
最近一個專案中需要模擬發起一個掃碼槍事件進行測試,之前寫react native呼叫DeviceEventEmitter
這個api就可以了,然而在web中不太常用,最終在mdn中發現了這個構造方法CustomEvent
發起事件
用法
new CustomEvent(eventName, params);
示例
建立一個自定義事件
const event=new CustomEvent('mock-event');
傳遞引數
這裡值得注意,需要把想要傳遞的引數包裹在一個包含detail
屬性的物件,否則傳遞的引數不會被掛載?(這裡不太確定,我試過傳id
和params
都不會生效)
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
移除事件監聽器。
相關文章
- js 建立和觸發事件 和 自定義事件JS事件
- JS觀察者模式-自定義事件JS模式事件
- js自定義Android端手勢事件JSAndroid事件
- JavaScript自定義事件JavaScript事件
- 自定義View以及事件分發總結View事件
- 繫結自定義事件事件
- Android自定義OnTouch事件Android事件
- 自定義事件提醒程式事件
- Javascript中自定義事件JavaScript事件
- WPF 自定義附加事件事件
- WPF自定義路由事件路由事件
- Android 自定義View:處理事件分發(四)AndroidView事件
- jquery自定義事件的使用jQuery事件
- 自定義事件相容處理物件事件物件
- 元件間通訊--自定義事件元件事件
- 080 元件自定義事件-繫結元件事件
- 自定義一個事件聚合器事件
- Android自定義View之事件分發機制總結AndroidView事件
- 利用hutool發起自定義編碼格式的請求
- 自定義View事件之進階篇(四)-自定義Behavior實戰View事件
- 自定義View事件篇進階篇(二)-自定義NestedScrolling實戰View事件
- js:陣列自定義排序JS陣列排序
- vue router路由自定義後退事件Vue路由事件
- 自定義事件實現子傳父事件
- 【爬坑日記】iview使用render自定義渲染觸發事件View事件
- 1.22 JQuery5:繫結自定義事件jQuery事件
- 前端自定義類事件回撥封裝前端事件封裝
- 偏前端 – jquery-iframe內觸發父視窗自定義事件-前端jQuery事件
- 寫一個簡單的支援Node.js&瀏覽器的自定義事件庫Node.js瀏覽器事件
- 和我一起理解js中的事件物件JS事件物件
- 由自定義事件到vue資料響應事件Vue
- element-ui - 原始碼學習 - 自定義事件UI原始碼事件
- Vue自定義元件事件傳遞:EventBus部分Vue元件事件
- 如何實現swipe、tap、longTap等自定義事件事件
- 使用微信js-sdk自定義分享JS
- Vue.js第十課 自定義指令Vue.js
- Angular JS 自定義指令的scope範圍AngularJS
- js和CSS3自定義滑鼠特效JSCSSS3特效