JSFiddle - React, Tailwind, and code Playground
JavaScript
CustomEventTarget.prototype = {
'constructor': CustomEventTarget,
on: function( ev, el ) { this.eventTarget.addEventListener( ev, el ) },
off: function( ev, el ) { this.eventTarget.removeEventListener( ev, el ) },
emit: function( ev ) { this.eventTarget.dispatchEvent( ev ) }
}
function CustomEventTarget() { this.eventTarget = new EventTarget }
// Usage
var iSubmit = new CustomEventTarget()
iSubmit.test = function( memo ) {
const detail = { memo: memo }
setTimeout( emit, 1000 )
function emit() {
iSubmit.emit( new CustomEvent( 'test', { detail: detail } ) )
}
}
iSubmit.on( 'test', function( e ) {
console.log( e )
document.body.innerHTML = e.detail.memo
})
document.body.innerHTML = 'dispatching event...'
iSubmit.test( 'memo text' )