redux-ready

0.1.3 • Public • Published

redux-ready

Enhances your redux store with a store.ready() method, which resolves once all promises dispatched into the store are fulfilled.

Very handy for server rendering redux applications that initialise with async actions.

Install

npm install redux-ready --save

Set up

var withReady = require("redux-ready");
 
var storeEnhancer = compose(
  withReady, // make sure this comes first
  applyMiddleware(thunk)
);
 
var store = createStore(reducers, storeEnhancer);

Usage

var app = <Provider store={store}><App /></Provider>;
 
// Render the app initially to dispatch any actions in components' lifecycle
var html = renderToString(app);
 
// Wait for async actions to resolve
store
  .ready()
  .then(state => {
    // Re-render app with the async data now in the store
    html = renderToString(app);
 
    // Serve the app html and state
    res.status(200).render("reactView", { html, state });
  })
  .catch(error => {
    // Serve an error page, or aleternatively, the app with an unresolved state
    res.state(500).render("errorView", { error });
  });
 

Package Sidebar

Install

npm i redux-ready

Weekly Downloads

17

Version

0.1.3

License

MIT

Last publish

Collaborators

  • djgrant