Tiny 200b functional event emitter / pubsub.
"*"
event type listens to all eventsthis
Mitt was made for the browser, but works in any JavaScript runtime. It has no dependencies and supports IE9+.
This project uses node and npm. Go check them out if you don't have them locally installed.
$ npm install --save mitt
Then with a module bundler like rollup or webpack, use as you would anything else:
// using ES6 modules
import mitt from 'mitt'
// using CommonJS modules
var mitt = require('mitt')
The UMD build is also available on unpkg:
<script src="https://unpkg.com/mitt/dist/mitt.umd.js"></script>
You can find the library on window.mitt
.
import mitt from 'mitt'
let emitter = mitt()
// listen to an event
emitter.on('foo', e => console.log('foo', e) )
// listen to all events
emitter.on('*', (type, e) => console.log(type, e) )
// fire an event
emitter.emit('foo', { a: 'b' })
// working with handler references:
function onFoo() {}
emitter.on('foo', onFoo) // listen
emitter.off('foo', onFoo) // unlisten
import * as mitt from 'mitt';
let emitter: mitt.Emitter = new mitt();
Mitt: Tiny (~200b) functional event emitter / pubsub.
Returns Mitt
Invoke all handlers for the given type.
If present, "*"
handlers are invoked after type-matched handlers.
Parameters
type
String The event type to invokeevt
[Any] Any value (object is recommended and powerful), passed to each handlerRegister an event handler for the given type.
Parameters
type
String Type of event to listen for, or "*"
for all eventshandler
Function Function to call in response to given eventRemove an event handler for the given type.
Parameters
type
String Type of event to unregister handler
from, or "*"
handler
Function Handler function to removeFirst off, thanks for taking the time to contribute! Now, take a moment to be sure your contributions make sense to everyone else.
Development Start:
This project is typed with Flow Type annotations. To ensure you have the proper typings for this project run
flow-typed install
Found a problem? Want a new feature? First of all see if your issue or idea has already been reported. If don't, just open a new clear and descriptive issue.
Pull requests are the greatest contributions, so be sure they are focused in scope, and do avoid unrelated commits.
git clone https://github.com/<your-username>/mitt
cd mitt
git checkout -b my-new-feature
npm install
git commit -am 'Add some feature'
git push origin my-new-feature