У меня есть 4 поля формы, в которые пользователь может выбрать или ввести значение, чтобы перейти к следующему шагу.Вот одно из этих полей:
<Form.Field
control={Checkbox}
checked={this.props.donationCheckbox10}
label='$10'
value={10}
onChange={() => {
this.props.dispatchUpdateStateData('', 'donationInputField');
this.props.dispatchUpdateStateData(!this.props.donationCheckbox10, 'donationCheckbox10');
this.clearTheOtherCheckboxes(10);
console.log(store.getState());
this.checkIfReadyToAdvance();
}}
/>
Как вы можете видеть, оно отправляет некоторые действия для обновления хранилища Redux, а затем проверяет, может ли пользователь продвинуться вперед.
Проблема в том, что условие продвижения всегда не выполняется, потому что реквизит еще не обновлен и не перерисован.По крайней мере, я думаю, что это проблема, основанная на ведении журнала this.checkIfReadyToAdvance()
(вызов getState () возвращает обновленные значения, потому что он не ожидает повторного рендеринга)
Я считаю, componentWillUpdate()
устарела.Каков современный способ запуска функции после обновления компонента хранилищем Redux?
Вот checkIfReadyToAdvance()
checkIfReadyToAdvance() {
if (
this.props.donationCheckbox10 ||
this.props.donationCheckbox25 ||
this.props.donationCheckbox50 ||
this.props.donationInputField
) {
this.setState({
canNotAdvance : false
});
console.log("ready");
} else {
this.setState({
canNotAdvance : true // in case all values are falsey again
});
console.log("not ready");
}
}