future-redux
TypeScript icon, indicating that this package has built-in type declarations

0.1.1 • Public • Published

Future Redux

Redux is a predictable state container for JavaScript apps.

This is a fork of Redux with a single difference: The return value of reducers.

In Redux your reducer returns a state object. This is very straight forward, but makes dealing with asynchronous updates quite tricky (there are more than 60 different libraries tackling this problem).

In Future Redux your update function returns an array containing at most two items:

  • The first is your state object
  • The second one is optional and is a Future object, which is similar to a Promise.

The resolve function of the future is equivalent to store.dispatch. You can use it like this:

// This is the future implementation we will use.
// You can use any implementation with a `fork` method.
import { Future } from "ramda-fantasy";
 
function myReducer(state, action) {
  switch(action.type) {
    case "FETCH_CONTENT";
      return [
        state,
        new Future((reject, resolve) => {
          fetch("www.content.com/endpoint")
            .then(r => r.json())
            .then(content =>
              resolve({ type : "CONTENT_ARRIVED", value: content})
            )
        })
      ];
 
    case "CONTENT_ARRIVED":
      return [action.value]
  }
}

That's it. This way you can have your reducers return the description of a side effect without losing its purity and without having to hook up other libraries for that.

License

MIT

/future-redux/

    Package Sidebar

    Install

    npm i future-redux

    Homepage

    redux.js.org

    Weekly Downloads

    4

    Version

    0.1.1

    License

    MIT

    Last publish

    Collaborators

    • fourlabsldn