Есть 2 компонента. 1 обернут в connect. Оба компонента переключаются между собой с анимацией, т.е. есть момент, в котором можно отследить отрисовку обоих.
При смене 1-го на 2-й, во втором компоненте происходит fetch then dispatch события. Первый компонент через connect получает обновление, которое задиспатчил второй компонент, и реагирует на это ререндером некоторой вещи в себе. Это правильное поведение. Итого по завершению рендера второго компонента в глобальном стейте redux'а у нас уже есть изменение, т.е. это уже не initial state.
Однако, когда возвращаемся к первому компоненту со второго, connect первого компонента возвращает почему-то inital state. Т.е. словно никаких изменений не было. Как такое возможно?
dispatch 2 и первый mapping -- это второй компонент обновил состояние, а первый успел среагировать, currentOnline стал 2
Однако когда вернулись к первому компоненту со второго, его коннект вернул initial state, в котором currentInline = false, о чем в useEffect сказал console.log с "current state"
Коннект первого компонента:
const mapStateToProps = state => {
console.log('MAPPING: ', state)
return {
currentOnline: state.stateStore.currentOnline
}
}
export default connect(mapStateToProps)(SideChooser);
Оба обернуты:
const rootReducer = combineReducers({chatStore, stateStore});
const store = createStore(rootReducer);
return (
<Provider store={store}>
// тут
</Provider>
)