У меня есть таблица с каждой строкой, имеющей одно поле ввода «количество продукта» (type = «number»), которое повторяется с использованием функции .map (). Но всякий раз, когда я обновляю значение единицы, используя {this.state.value}, оно устанавливает одинаковое значение для всех полей ввода.
class TableRow extends React.Component {
constructor(props) {
super(props);
this.state = {
qty: 0
};
}
handleChange(e, items, i) {
this.setState({
qty: e.target.value
});
}
render() {
var rowData = this.props.data.map((item, index) => {
return(
<tr key={item.ProductId}>
<td>{item.Name}</td>
<td>{item.Description}</td>
<td>{(item.Quantity > 0)? item.Status: "Out of Stock"}</td>
<td><input type="number" name="productQuantity" value={this.state.qty} onChange={(e) => { this.handleChange(e, this.props.data, index) }} style={{width: '45px', textAlign: 'center' }} /></td>
<td><strong><span className="tblCurrency">{item.CurrencyCode}</span> <span className="tblPrice" ref="tblPrice">{item.Price}</span></strong></td>
<td><strong><span className="itemsPrice">{item.Price * this.state.qty}</span></strong></td>
</tr>
)
});
return(<tbody>{rowData}</tbody>)
}
}
Текущая функциональность здесь - https://jsfiddle.net/1anLz72v/39/
Ожидаемый результат должен обновлять поле ввода и общую стоимость только для текущей строки.