我是 React 的新手,在尝试实验时注意到了受控表单元素的一种行为。我有一个受控输入元素,其值绑定到父组件的状态上,其 onChange 处理程序接收用户键入的值并更新该状态。所以每次用户键入内容时,输入值都会反映出变化。这是期望的效果。当输入在渲染函数中创建时,它的工作很出色。但是,如果输入是通过在构造函数中设置的类变量进行初始化的,当状态改变时,同一输入不能更新其值。唯一的区别在于输入元素最初的初始化位置。什么会导致这样的行为?
感谢任何帮助!
以下是可能导致错误行为的代码示例:
以下是可能导致错误行为的代码示例:
class App extends React.Component {
constructor(props){
super(props);
this.state = {
val : '',
}
this.handleChange = this.handleChange.bind(this);
this.input = (
<input type="text"
onChange={this.handleChange }
value={this.state.val} />
);
}
handleChange(e){
this.setState({val:e.target.value});
}
render() {
return (
<div className="App">
{ this.input ? this.input : null }
</div>
);
}
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>