У меня проблема с генерацией датеров on the fly
на основе количества пропущенных реквизитов. Реквизиты, передаваемые из родительского компонента, являются платой за конкретный продукт. Так, скажем, 6 сборов, затем мы создаем поле ввода, содержащее заряд, а затем для каждого из них должен отображаться соответствующий указатель даты.
Надеемся, что изображение ниже показывает это лучше, чем я мог бы объяснить! (Изображение рисует тысячу слов, которые они говорят !!)
Так что моя проблема в том, что пользователь обновляет все даты в средствах выбора даты ( справа) тогда как мне сохранить каждую дату для конкретного идентификатора? Я бы, очевидно, сохранил их в состоянии, но как мне сохранить каждый?
Я не могу просто иметь значения в предустановленном состоянии, так как количество сборщиков дат и сборов может отличаться каждый раз. Иногда может быть 1, иногда может быть 10.
Код, который я имею для этого компонента, выглядит следующим образом:
export class Charges extends Component {
constructor(props) {
super(props);
this.state = {
currentItem: 0,
newDate: ''
fields: []
}
this.handleChange = this.handleChange.bind(this);
}
****** EDIT *********
handleDateChange = (e) => {
const date = e.target.value;
const chargeId = e.target.name;
console.log(date);
this.setState({
fields: [
...this.state.fields,
[chargeId]: date
]
}, () => console.log(this.state.fields))
}
**********
render() {
const {charges, chargeTypes} = this.props;
if (charges.length === 0) { return null; }
return <Form>
<h3>Charges</h3>
{charges.map(charge => {
console.log(charge);
const chargeType = chargeTypes.find(type => type.code === charge.type) || {};
return <Grid>
<Grid.Row columns={2}>
<Grid.Column>
<Form.Input
key={charge.id}
label={chargeType.description || charge.type}
value={Number(charge.amount).toFixed(2)}
readOnly
width={6} />
</Grid.Column>
<Grid.Column>
<DateInput
name={charge.id}
selected={this.state.newDate}
onChange={this.handleChange}
value={charge.effectiveDate}
/>
</Grid.Column>
</Grid.Row>
</Grid>
})}
<Divider hidden />
<br />
</Form>
}
}
Как видите, я просто перезапишу предыдущее состояние значение, если пользователь должен был обновить более одного средства выбора даты?
Я просмотрел следующую статью, но это не совсем то, что я хочу: Реакция множественных DatePickers
Как можно я достигаю функциональности, которую хочу? Надеюсь, я это прояснил? Если есть какие-либо вопросы, пожалуйста, не стесняйтесь спрашивать!
* Отредактированный ответ *
Я теперь обновил handleDateChangeMethod для хранения данных в массиве (как это то, что я хочу) однако, это дает мне только chargeId
, а не дату, назначенную ему!
См. скриншот ниже:
Можно ли как-то сохранить это в массиве состояний [chargeId: date]