【发布时间】:2017-09-27 12:08:15
【问题描述】:
我有一个反应组件。我从我的顶级组件向下传递 updateInventory 函数。
class Inventory extends Component {
constructor(props) {
super(props);
this.state = {
name: this.props.name,
price: this.props.price,
id: this.props.id
};
this.handleChange = this.handleChange.bind(this);
}
handleChange(e) {
this.setState({
[e.target.name]: e.target.value
});
}
render(props) {
return (
<form onSubmit={(e)=>this.props.updateInventory(e, this.state)}>
<input name='name' value={this.state.name} onChange={this.handleChange} />
<input name='price' type='number' value={this.state.price} onChange={this.handleChange} />
<button type='submit'>Update</button>
</form>
)
}
};
export default Inventory;
在我的顶级组件中:
updateInventory = (e, state) => {
let pizzaState = this.state.pizzas;
const index = pizzaState.findIndex((pizza)=>{
return pizza.id === state.id;
});
Object.assign(pizzaState[index], state);
console.log( pizzaState );
e.preventDefault();
};
到目前为止,这似乎有效(我还没有更新我的顶级状态)但我可以看到,当我更新价格时,新值是一个字符串而不是整数。我希望只有一个 handleChange 函数用于我的所有输入,因为我会添加更多,这可能吗?
【问题讨论】:
标签: javascript reactjs