a redux-inspired state mutator.
npm install immutator
be aware: immutator uses Proxy
. see node support and browser support.
const immutator = require('immutator')
const state = immutator({ count: 0 })
try {
state.count++
} catch (err) {
console.log('Error: state cannot be mutated directly. please define a mutator.')
}
console.log(state) // { count: 0 }
// define mutator `increment`
state.increment = state => state.count++
// call mutator
state.increment()
console.log(state) // { count: 1 }
state
is a proxy whose target can only be mutated by defining and calling a mutator.
functions defined on the immutator are mutators. mutators are passed a mutable copy of state as their first argument when they are called. while they share the same namespace, defining a mutator does not affect state.