Read and write values to a state object and listen for changes at any given path
npm i state-eventer // initialize an empty state const state = new StateEventer() state.get() // {} // listen for state changes at specific paths const listeners = [ state.on('books', console.log), state.on('books.1', console.log) ] // remove listener listeners[0].off() // add/modify value and notify listeners state.set('books.1.title', 'War and Peace') // retrieve values from the state state.get() // { books: { 1: { title: 'War and Peace' } } } state.get('books') // { 1: { title: 'War and Peace' } } state.get('books.1') // { title: 'War and Peace' } state.get('books.1.title') // 'War and Peace' // remove values from the state and notify listeners state.unset('books.1.title') state.get('books.1.title') // undefined // reset the entire state and notify listeners state.set({}) state.get() // {} // transform state.update('counter', n => n + 1, 0) // 1path(String|Array) the path to listen for changeslistenerFn(Function) the function to call when the value changes
Returns Listener (see below)
path(String|Array) the path of the desired valuedefaultValue(*) optional default value to return if the value at the specified path is undefined
path(String|Array) the path at which to set the valuevaluethe value to set
value(Object) resets the root state to this value
path(String|Array) removes this path from the state
path(String|Array) the path at which to set the valuetransformFn(Function) transform the current value to a new valuedefaultValue(*) optional default value to pass into the transform function if the value at the given path is undefinedupdate('counter', n => n + 1, 0)
MIT