Skip to content

Instantly share code, notes, and snippets.

@dsimmons
Created January 18, 2015 18:19
Show Gist options
  • Save dsimmons/c174c6c31d7d941ed14c to your computer and use it in GitHub Desktop.
Save dsimmons/c174c6c31d7d941ed14c to your computer and use it in GitHub Desktop.
React Async SSR
module.exports.render = function renderFn(url) {
var bodyHTML;
if (ExecutionEnvironment.canUseDOM) {
Router.run(Routes, Router.HistoryLocation, (Handler, state) => {
bodyHTML = React.render(<Handler params={state.params}/>, document.body);
});
} else {
Router.run(Routes, url, (Handler, state) => {
var promises = state.routes
.filter(route => route.handler.fetchData)
.reduce((promises, route) => {
promises.push(route.handler.fetchData());
return promises;
}, []);
bodyHTML = Promise.all(promises)
.then(data => React.renderToStaticMarkup(<Handler {...data[0]} params={state.params}/>));
});
}
return bodyHTML;
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment