В приложении реакции есть 3 поля в форме.
- Раскрывающийся список со значениями, чай и кофе (при выборе поля Чай / Кофе поля 2 и 3 должны быть видны)
- Имя чая / кофе
- Кол-во чая / кофе
Я устанавливаю состояние с помощью setState, которое должно идентифицировать выбранный чай или кофе.
Пока публикуется, работает нормально.Но я использую ту же форму для обновления.
Только поле 1 будет загружено с фактическим значением.но поле 2 и поле 3 не загружаются со значением и не считывают никаких значений.
...
<Form onSubmit={this.props.hanleSubmit(this.onSubmit)}>
<Field name="drink" type="select" onChange={(e) => {
if (e.target.value === 'T') {
this.setState({isTea: true})
} else {
this.setState({isTea: false})
}
}}component={renderField}>
<option value="" disabled>select any</option>
<option value="T">Tea</option>
<option value="C">Coffee</option>
</Field>
{
this.state.isTea && ...Field for Tea name and Field for Tea Qty...
}
{
!this.state.isTea && ...Field for coffee name & field for coffee qty...
}
</Form>
И для обновления в componentDidUpdate
, если данные имеют этот формат
data = {
drink: 'T',
teaName: 'Green tea',
coffeeName: null,
teaQty: '4',
coffeeQTy: null
}
ComponentDidUpdate(prevProps, prevState) {
...
if (data) {
if (data.drink === 'T') {
this.setState({isTea: true});
} else {
this.setState({isTea: false});
}
this.props.change('drink', data.drink);
if (data.drink === 'T') {
this.props.change('teaName', data.teaName);
this.props.change('teaQty', data.teaQty);
} else {
this.props.change('coffeeName', data.coffeeName);
this.props.change('coffeeQty', data.coffeeQty);
}
}
...
}
Мне нужно, чтобы данные были загружены правильно для полей 2 и 3. И это должно работать правильно для изменения значения.