【发布时间】:2018-06-16 01:08:22
【问题描述】:
我有 2 个 React 父/子组件。子组件有一个为父组件的先前状态添加 +1 的按钮,以及一个为onChange 事件触发handleChange 函数的表单。
问题 从表单输入中,我想触发一个函数,将状态设置为前一个状态,+表单中的输入。
例如,如果我在输入中输入 50 并点击提交,我希望新状态为 100
这是一个代码框:https://codesandbox.io/s/30mz2vvyo1
class Parent extends React.Component {
constructor(props) {
super(props);
this.state = {
value: 50
}
this.handleChange = this.handleChange.bind(this);
this.handleSubmit = this.handleSubmit.bind(this);
}
handleChange(event) {
this.setState((prevState) => {
return { value: prevState.value + 1 }
});
}
handleSubmit(event) {
event.preventDefault();
}
render() {
return (
<div>
<Child value={this.state.value} handleChange={this.handleChange} handleSubmit={this.handleSubmit} />
</div>
)
}
}
class Child extends React.Component {
render() {
return (
<div>
<button onClick={this.props.handleChange}>Count + 1</button>
<div>{this.props.value}</div>
<form onSubmit={this.props.handleSubmit}>
<label>
Name:
<input type="text" onChange={this.props.handleChange} />
</label>
<input type="submit" value="Submit" />
</form>
</div>
)
}
}
【问题讨论】:
-
您可能需要像这样将值 attr 添加到子组件上的输入元素
-
如果我添加值 attr,表单将变为受控表单,然后我无法更改我认为的输入值,如果我想将值更改为 40 而不是 50,我无法删除输入文字
标签: javascript reactjs