如何在redux减速器中监听react-router位置变化?

时间:2016-10-28 20:19:16

标签: javascript reactjs redux react-router

我有一个React Redux应用程序,我正在尝试在我的一个Reducer中监听react-router位置更改。我使用的是hashHistory,而不是browserHistory。在我的Redux devtools中,我可以看到它在位置发生变化时触发了一个动作:

enter image description here

然而,在我的reducer中,当我听'LOCATION_CHANGE'时,它没有捕获任何东西。

import * as types from '../constants/actionTypes';
import objectAssign from 'object-assign';
import initialState from './initialState';

export default function listingsReducer(state = initialState.listings, action) {
  switch (action.type) {
    case 'LOCATION_CHANGE': {
        console.log(action); //currently doesn't get into this case block
        return state;
    }
    default:
        return state;
  }
}

为了在我的减速机中处理此动作,我必须使用什么?

2 个答案:

答案 0 :(得分:6)

case 'LOCATION_CHANGE'更改为case '@@router/LOCATION_CHANGE'

答案 1 :(得分:0)

更好的是,使用react-router提供的常量:

import { LOCATION_CHANGE } from 'connected-react-router';

// ...

switch (action.type) {
    case LOCATION_CHANGE: {}
}