Skip to content

Instantly share code, notes, and snippets.

@prank7
Created February 19, 2016 10:24
Show Gist options
  • Save prank7/039ee7b5ada7c183d664 to your computer and use it in GitHub Desktop.
Save prank7/039ee7b5ada7c183d664 to your computer and use it in GitHub Desktop.
// Server Side Rendering based on routes matched by React-router.
app.use((req, res) => {
match({ routes, location: req.url }, (err, redirectLocation, renderProps) => {
if (err) {
return res.status(500).end('Internal server error');
}
if (!renderProps) {
return res.status(404).end('Not found!');
}
const initialState = { posts: [], post: {} };
const store = configureStore(initialState);
fetchComponentData(store.dispatch, renderProps.components, renderProps.params)
.then(() => {
const initialView = renderToString(
<Provider store={store}>
<RouterContext {...renderProps} />
</Provider>
);
const finalState = store.getState();
res.status(200).end(renderFullPage(initialView, finalState));
})
.catch(() => {
res.end(renderFullPage('Error', {}));
});
});
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment