Я пишу приложение, которое использует react-router
для маршрутизации и использует Redux
для управления состоянием. Мое приложение содержит два редуктора для двух разных страниц, поэтому при маршрутизации между ними я также использую replaceReducers
(называемый componentWillMount
) для переключения между редукторами.
При фактической маршрутизации между страницами,mapStateToProps
компонента unmounts вызывается и, конечно, выдает исключение, поскольку редуктор был заменен, поэтому состояние для предыдущего редуктора больше не определяется. (эта ошибка однонаправленная - т.е. только с первой страницы на вторую страницу или наоборот).
Следует отметить, что я также создал history
для маршрутизатора сам и заменил его исходную историюсвойство в точке входа моего приложения. Почему вызывается mapStateToProps
, если компонента больше нет в DOM?
Пример кода:
первая страница:
public componentWillMount() {
replaceReducers({
reducer: FirstPageReducer,
});
}
вторая страница:
public componentWillMount() {
replaceReducers({
reducer: SecondPageReducer,
});
}
магазин:
export function replaceReducers(reducers: ReducersMapObject<any, AnyAction>) {
store.replaceReducer(combineReducers(reducers));
}