javascript - 在反应中创建受控输入
问题描述
我是一个新手,正在使用 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>
我在哪里做错了?我看不到我的错误..
解决方案
该问题与您如何将事件处理程序分配给onChange
.
onChange
期望一个回调函数,当输入的值改变时将被触发。在onChange={this.handleChange()}
您的帖子中,您实际上分配undefined
了onChange
sincehandleChange
函数更新组件状态,但它不返回任何内容。
将其更改为onChange={this.handleChange}
执行您期望的工作。当输入改变时,this.handleChange
将被调用并将event
对象作为参数传入。
希望这会有所帮助。
推荐阅读
- html - Boostrap:无法将表格相互平行对齐并在引导程序 3 中添加滚动条
- tensorflow - 与 Eager 和 Graph 模式无关的 Tensorflow 训练
- swift - 图像不适合 collectionCell
- python-3.x - 为什么不能用lxml.html解析target.html中的所有div元素?
- php - 使用 VueJS 和 Laravel 登录
- javascript - Amcharts:更改光标时不显示类别数据
- html - Bootstrap css,如何减小“th”和“td”的宽度?
- ios - validateFunctionArguments:3379:断言失败`Fragment Function,纹理的像素格式(MTLPixelFormatRGBA16Unorm)
- dom - 所有 DOM 节点都继承自 DOM Node 接口吗?
- python-3.x - 关闭会话后运行 TensorFlow 模型测试数据