Redux で State をリセットする

ログアウトしたときなどに、ReduxのStateをまっさらにリセットしたいことがある。 そういう場合は下記のように、rootReducer内でログアウトactionを拾ってからReducerを更新する。

なお、一部のstateだけはリセットしたくない場合は、そのstateだけ残せばよい。 例えば下記では、react-routerを用いているため router だけは残している。

import { createStore, combineReducers } from 'redux';
import { routerReducer } from 'react-router-redux';

import reducers from '../reducers';

const appReducer = combineReducers({
  ...reducers,
  router: routerReducer
});

const rootReducer = (state, action) => {
  if (action.type === 'LOGOUT') {
    const { router } = state;
    state = { router };
  }
  return appReducer(state, action);
};

参考: How to reset the state of a Redux store?