|
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- change-emitter
- ==============
-
- [](https://travis-ci.org/acdlite/change-emitter)
- [](https://www.npmjs.com/package/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
-
- ```js
- 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`:
-
- ```js
- 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
- }
- }
- ```
|