1 - Вы можете написать промежуточное программное обеспечение для обработки побочных эффектов типа действий INCREMENT_ENTHUSIASM
и DECREMENT_ENTHUSIASM
. Следующий пример написан на ES6, поэтому вам нужно будет перевести на Typescript.
const middleware = store => next => action => {
next(action);
switch (action.type) {
case INCREMENT_ENTHUSIASM:
store.dispatch({
type: INCREMENT_GLOBAL_ENTHUSIASM // increment global value
});
break;
case DECREMENT_ENTHUSIASM:
store.dispatch({
type: DECREMENT_GLOBAL_ENTHUSIASM // decrement global value
});
break;
default:
break;
}
}
...
import { createStore, combineReducers, applyMiddleware } from 'redux';
const store = createStore(
combineReducers({
enthusiasm
}),
applyMiddleware(middleware)
);
Но если globalEnthusiasmLevel
можно рассчитать по уровням энтузиазма всех пользователей, то как насчет того, чтобы не хранить их в магазине, а рассчитать их в mapStateToProps
, когда вместо этого нужно использовать компонент React? Вам будет легче.
2 - Если вы собираетесь хранить globalEnthusiasmLevel
в другом редукторе, тогда да, так и должно быть. Но см. Мой пункт выше о том, что нужно не хранить, а вычислять.