Причины могут быть следующими:
в магазине Redux он по-прежнему будет отображаться как пустой
1) Вы используете this.setState
для установки состояния, которое устанавливает локальное состояние компонента, а не глобальное состояние в Redux.
2) Вы немедленно пытаетесь получить flightNumber
, но он не будет установлен, поскольку setState
является асинхронным c звонок.
Решение для 1):
Единственный способ изменить состояние в резервном хранилище - отправить действие с данными, которые вы хотите изменить. Например:
handleSubmit = event => {
event.preventDefault();
this.props.dispatch({type: CHANGE_FLIGHT_NUMBER, flightNumber: flightNumber: this.props.match.params.flightNumber})
}
In Reducer:
case CHANGE_FLIGHT_NUMBER:
return {...state, flightNumber: action.flightNumber}
Решение для 2):
Передать обратный вызов на setState
:
this.setState(
{
passenger: {...this.state.passenger, flightNumber: this.props.match.params.flightNumber}
},
() => {
console.log(this.state.passenger)
}
)
Допущения, сделанные при написании этого ответа:
1) Вы передаете состояние как (state = initialState, action)
функции редуктора.
2) В вашем магазине есть состояние, называемое flightNumber
существует.