makssof
@makssof
Web-разработчик

Redux не сохраняет state, возвращает initial state через connect?

Есть 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"
617d3d2c71dff264505029.png
Коннект первого компонента:
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>
	)
  • Вопрос задан
  • 117 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы