Search code examples
reactjsreduxreact-routerreact-reduxreact-router-redux

Dispatching `push` does not change route in React Redux Router


I'm working on a project with the React Redux Router, and am trying to change the page. When a component dispatches a "push" action, I see the "@@router/LOCATION_CHANGE" come through, but nothing changes.

I do have the routerMiddleware applied as well,

import thunk from 'redux-thunk';
import { routerMiddleware } from 'react-router-redux';
import createHistory from 'history/createBrowserHistory'
import rootReducer from '../reducers';

export const history = createHistory();
const middleware = routerMiddleware(history)
export function configureStore(initialState) {
  return createStore(
    rootReducer,
    initialState,
    applyMiddleware(thunk),
    applyMiddleware(middleware)
  );
}

any thoughts as to what I'm doing incorrectly?


Solution

  • applyMiddleware expects a list of middlewares, so you're using it wrong: Please change it to:

    export const history = createHistory();
    const middleware = routerMiddleware(history)
    export function configureStore(initialState) {
      return createStore(
        rootReducer,
        initialState,
        applyMiddleware(thunk,middleware)
      );
    }
    

    This also explains why switching them worked (the store received another middleware).