I've been trying to figure this out for a while and I'm getting more and more confused.
I want to reset/change Redux state every time I leave or change route. I'm using react-router-redux
with history.listener
dispatching an action every time route changes
history.listen(location => store.dispatch(resetManualsCategory()));
Action creator:
export function resetManualsCategory() {
return {
type: 'RESET_MANUALS_CATEGORY'
}
}
Reducer
export function manualCategories(state=[], action) {
switch (action.type) {
case 'SELECT_MANUALS_CATEGORY':
[...]
case 'RESET_MANUALS_CATEGORY':
console.log('test reducer');
return Object.assign({}, state, {
manualCategory: 'test'
})
default:
return state
}
}
What confuses me the most, the state updates if I refresh the page or click twice on the route in the top nav, but a single route change doesn't affect the redux state even though the action and reducer fire (displays the test message in the console).
What am I doing wrong and what actually is happening here?
LOCATION_CHANGE
the same as@@router/LOCATION_CHANGE
? – Felder