Package Exports
- change-emitter
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (change-emitter) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
change-emitter
Listen for changes. Like an event emitter that only emits a single event type. Really tiny.
I extracted this from Redux's createStore()
because I found it to be useful in other contexts. Use it where you want the most minimal event subscription implementation possible.
Usage
import { createChangeEmitter } from 'change-emitter'
const emitter = createChangeEmitter()
// Called `listen` instead of `subscribe` to avoid confusion with observable spec
const unlisten = emitter.listen((...args) => {
console.log(args)
})
emitter.emit(1, 2, 3) // logs `[1, 2, 3]`
unlisten()
emitter.emit(4, 5, 6) // doesn't log
Larger example
Here's a (partial) implementation of Redux's createStore
:
const createStore = (reducer, initialState) => {
let state = initialState
const emitter = createChangeEmitter()
function dispatch(action) {
state = reducer(state, action)
emitter.emit()
return action
}
function getState() {
return state
}
return {
dispatch,
getState,
subscribe: emitter.listen
}
}