Module flamingo-carotene-state-manager¶
The state-manager gives you the possibility to set and get states, and watch changes. Under the hood redux is used.
How to initialize¶
npm i -D flamingo-carotene-state-manager
Import state manager¶
import state from 'flamingo-carotene-state-manager'
Note: The state-manager is a singleton and already returns an instance but a class.
Creating initial state¶
const initialState = {
 {
  foo: true,
  bar: {
    foo: 'oof',
    baz: 'zab'
  }
  baz: {
    data: null
  }
}
Initialize class with initial state¶
state.init(initialState)
How to use¶
Getting a state¶
You can get a value of a state by using get().
The first parameter is a .-notated path of the value inside the state object.
state.get('bar.baz')
Setting a state¶
By calling set() you'll set a new value for a key. You can even create new state values with set.
state.set('baz.data', 'myNewValue')
Watching a state¶
You can watch for a state change.
Just call watch() with a key you're like to watch, and the method will be called instantly, when a state change happens. 
The callback will get the new state as the first parameter.
state.watch(`baz.data`, (newValue) => {
  console.log('State "baz.data" has changed to new value!', newValue) 
})
Note that the newValue is an immutable. So you can't change the state by changing newValue inside the watcher.
To change states, always call set().
Options¶
state.watch(`baz.data`, myCallback, { noCompare: true })
noCompare¶
You can enforce triggering listener functions even if the state
has not changed by adding noCompare: true to the options object.
Default is false