Skip to content

Commit fd92d69

Browse files
committed
add a redirect helper that works both the client and the server
1 parent b2c5062 commit fd92d69

2 files changed

Lines changed: 9 additions & 3 deletions

File tree

src/client.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ import 'babel-polyfill';
55
import React from 'react';
66
import ReactDOM from 'react-dom';
77
import { applyRouterMiddleware, Router, browserHistory, match } from 'react-router';
8-
import { syncHistoryWithStore } from 'react-router-redux';
8+
import { bindActionCreators } from 'redux';
9+
import { syncHistoryWithStore, replace } from 'react-router-redux';
910
import { ReduxAsyncConnect } from 'redux-connect';
1011
import { AppContainer as HotEnabler } from 'react-hot-loader';
1112
import { useScroll } from 'react-router-scroll';
@@ -53,10 +54,12 @@ Promise.all([window.__data ? true : isOnline(), getStoredState(offlinePersistCon
5354
const store = createStore(browserHistory, { client, app, restApp }, data, offlinePersistConfig);
5455
const history = syncHistoryWithStore(browserHistory, store);
5556

57+
const redirect = bindActionCreators(replace, store.dispatch);
58+
5659
const renderRouter = props => (
5760
<ReduxAsyncConnect
5861
{...props}
59-
helpers={{ client, app, restApp }}
62+
helpers={{ client, app, restApp, redirect }}
6063
filter={item => !item.deferred}
6164
render={applyRouterMiddleware(useScroll())}
6265
/>

src/server.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,10 @@ app.use((req, res) => {
106106
res.status(500);
107107
hydrateOnClient();
108108
} else if (renderProps) {
109-
loadOnServer({ ...renderProps, store, helpers: providers }).then(() => {
109+
const redirect = ::res.redirect;
110+
loadOnServer({ ...renderProps, store, helpers: { ...providers, redirect } }).then(() => {
111+
if ( res.headersSent ) return;
112+
110113
const component = (
111114
<Provider store={store} app={providers.app} restApp={providers.restApp} key="provider">
112115
<ReduxAsyncConnect {...renderProps} />

0 commit comments

Comments
 (0)