首页 > 解决方案 > 在反应中创建受控输入

问题描述

我是一个新手,正在使用 FreeCodeCamp 学习 React。在这个挑战中,它说:

当您在输入框中键入时,该 handleChange()方法会处理该文本,将其设置为input本地状态中的属性,并在页面上的输入框中呈现为值。组件状态是有关输入数据的唯一真实来源。

我写了这个解决方案:

 class ControlledInput extends React.Component {
constructor(props) {
  super(props);
  this.state = {
    input: ''
  };
  // Change code below this line
  this.handleChange = this.handleChange.bind(this);
  // Change code above this line
}
// Change code below this line
handleChange(event) {
  this.setState({
    input: event.target.value
  })
}
// Change code above this line
render() {
  return (
    <div>
      { /* Change code below this line */}
      <input value={this.state.input} onChange={this.handleChange()} />
      { /* Change code above this line */}
      <h4>Controlled Input:</h4>
      <p>{this.state.input}</p>
    </div>
  );
}
};

控制台说:

“构建错误,打开浏览器控制台了解更多信息。”</p>

我在哪里做错了?我看不到我的错误..

标签: javascriptreactjs

解决方案


该问题与您如何将事件处理程序分配给onChange.

onChange期望一个回调函数,当输入的值改变时将被触发。在onChange={this.handleChange()}您的帖子中,您实际上分配undefinedonChangesincehandleChange函数更新组件状态,但它不返回任何内容。

将其更改为onChange={this.handleChange}执行您期望的工作。当输入改变时,this.handleChange将被调用并将event对象作为参数传入。

希望这会有所帮助。


推荐阅读