Nitrogen Pumpkin Mulch

    change-emitter
    DefinitelyTyped icon, indicating that this package has TypeScript declarations provided by the separate @types/change-emitter package

    0.1.6 • Public • Published

    change-emitter

    build status npm version

    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
      }
    }

    Install

    npm i change-emitter

    DownloadsWeekly Downloads

    959,174

    Version

    0.1.6

    License

    MIT

    Last publish

    Collaborators

    • istarkov
    • acdlite