Skip to content

Instantly share code, notes, and snippets.

@sethbergman
Created September 17, 2017 04:29
Show Gist options
  • Save sethbergman/b2e9bfcccc12b9e3e44fb12030230b01 to your computer and use it in GitHub Desktop.
Save sethbergman/b2e9bfcccc12b9e3e44fb12030230b01 to your computer and use it in GitHub Desktop.
React router matching
// 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