Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

deku-stateful

rstacruz13MIT1.7.0

Keep states in a Deku component

deku, state, component, virtual, dom

readme

deku-stateful

Keep state in Deku components

Deku v2 has no states in components. This is a higher-order component that adds state and setState to the model. See this conversation here.

Compatible with Deku 2.0.0 (tested with 2.0.0-rc11) and Decca 2.0.0.

Status

import stateful from 'deku-stateful'

function initialState () {
  return { clicked: 0 }
}

function render ({ getState, setState }) {
  return <div>
    Clicked { getState().clicked } times.
    <button onClick={ () => setState({ clicked: getState().clicked + 1 }) }>
      Click me
    </button>
  </div>
}

export default stateful({ initialState, render })

Example

API

render, onCreate, onUpdate, onRemove

The render function and the lifecycle hooks will also be passed getState and setState.

function render({ getState, setState }) {
}
  • setState(object) — Updates the state when called. When setState is ran, it will queue up changes and dispatch an event like dispatch({ type: 'UI_STATE_CHANGE' }). This is meant to be picked up by your Redux store, which we're assuming will retrigger a render() when called.
  • getState() — Returns the current state.
  • state — The current state; it's preferred to use getState() instead, but it's here for legacy compatibility.

initialState

Your component can have an initialState function. Return the first state here.

function initialState ({ props }) {
  return { clicked: false }
}

export default stateful({ initialState, render })

Thanks

deku-stateful © 2016+, Rico Sta. Cruz. Released under the MIT License.
Authored and maintained by Rico Sta. Cruz with help from contributors (list).

ricostacruz.com  ·  GitHub @rstacruz  ·  Twitter @rstacruz

changelog

v1.7.0

Sep 20, 2016

v1.6.0

Sep 20, 2016

  • #7 - Fix issue with onRemove not being able to access state. (#8, @borisirota)

v1.5.0

Aug 15, 2016

  • Support Decca's function-only components.

v1.4.0

Jan 29, 2016

v1.3.0

Jan 25, 2016

  • #1 - Add onCreate hook.

v1.2.0

Jan 10, 2016

  • Make state changes immutable, allowing you to run oldstate === newstate to check for deep equality.

v1.1.0

Jan 10, 2016

  • Remove shouldUpdate support.

v1.0.0

Jan 10, 2016

Initial release.