【发布时间】:2020-09-19 15:14:39
【问题描述】:
如何对父组件 (Form.js) 中的变量进行 2 路绑定,以便子组件 (InputText.js) 中发生的更改将在父组件中更新?
预期结果:在InputText.js 中的input 中键入值将更新Form.js 的状态
在 Form.js 中
render() {
return (
<div>
<InputText
title="Email"
data={this.state.formInputs.email}
/>
<div>
Value: {this.state.formInputs.email} // <-- this no change
</div>
</div>
)
}
在 InputText.js 中
export default class InputText extends React.Component {
constructor(props) {
super(props);
this.state = props;
this.handleKeyChange = this.keyUpHandler.bind(this);
}
keyUpHandler(e) {
this.setState({
data: e.target.value
});
}
render() {
return (
<div>
<label className="label">{this.state.title}</label>
<input type="text" value={this.state.data} onChange={this.handleKeyChange} /> // <-- type something here
value: ({this.state.data}) // <-- this changed
</div>
)
}
}
【问题讨论】:
-
InputText 组件有它自己的本地状态,而 Form 组件有另一个状态,当您输入内容时,您需要触发一个从表单更新状态的事件。 stackoverflow.com/questions/38394015/…
-
顺便说一下,这不是你所说的“2 路数据绑定”,这里有一个很好的解释 - stackoverflow.com/a/13504965/5862900
标签: javascript reactjs