Моя форма состоит из нескольких строк: Это код:
<Form>
<Row form>
<Col md={3}>
<FormGroup>
<Label for="element">Element</Label>
<Input type="text" name="element" id="element" />
</FormGroup>
</Col>
<Col md={3}>
<FormGroup>
<Label for="description">Description courte</Label>
<Input
type="text"
id="description"
name="description"
/>
</FormGroup>
</Col>
<Col md={3}>
<FormGroup>
<Label for="coutUnitaire">Coût unitaire</Label>
<Input
type="text"
name="coutUnitaire"
id="coutUnitaire"
/>
</FormGroup>
</Col>
<Col md={3}>
<FormGroup>
<Label for="quantite">Quantité</Label>
<Input type="text" name="quantite" id="quantite" />
</FormGroup>
</Col>
</Row>
<Button
color="primary"
className="float-right"
onClick={this.onDevisCreer}
>
Créer le devis
</Button>
</Form>
Обычно, когда дело доходит до извлечения значений из формы I будет использовать атрибут value и прослушиватель:
<Input
type="text"
id="noteText"
name="noteText"
type="textarea"
value={this.state.noteText}
onChange={this.onChange}
required
/>
Прослушиватель:
onChange(e) {
this.setState({
[e.target.name]: e.target.value,
});
}
Однако, поскольку эта строка будет повторяться много раз, я не могу создать свойство состояния для каждого ввода (4 элемента в строке * nbr строк).
Конечный результат, который мне нужен, это массив объектов, где каждый объект содержит информацию в одной строке вида:
// I need to create an array of this:
// {
// element: "TC 100",
// description: "Toner Cartridge",
// quantite: 2,
// coutUnitaire: 2,
// total: coutUnitaire*quantite, // to be calculated
// }
Я до сих пор не могу понять, как я могу получить значения входов формы, если я не буду связывать их со свойством состояния, как обычно.