Вам нужно создавать динамические входные данные, верно? Итак, вы можете передать имя продукта своему обработчику this.handleChange('productName')
, а затем сделать что-то вроде следующего. В вашем случае вам нужно будет использовать имя вычисляемого свойства, чтобы динамически устанавливать состояние (как вы уже делаете)
handleChange = name => event => {
//more logic here as per the requirement
this.setState({
[name]: event.target.value,
});
};
Или вы можете создать отдельные обработчики onChange для каждого продукта, цены, количества.
handleProductChange = (name) => (evt) => {
const newProducts = this.state.products.map((product, pidx) => {
if (name !== product.productName) return product;
return { ...product, productName: evt.target.value };
});
this.setState({ products: newProducts });
}
Быстрый поток: Когда происходит изменение продукта onChange, вы можете сохранить продукт в массиве procucts (в состоянии), а когда произойдет изменение цены, вы можете отправить имя продукта вместе с ним и сопоставить продукт с ценой. и количество.
Здесь вы можете найти хорошую копию JS bin с React, точно такую же, какую вы хотите достичь.