在我的组件中,我尝试调用组件的handleChange 和handleSubmit 函数
如果我像这样渲染表格示例 https://facebook.github.io/react/docs/forms.html,
<form onSubmit={this.handleSubmit}>
<input type="text" value={this.state.value} onChange={this.handleChange} placeholder="Enter new title"/>
<input type="submit" value="Submit" />
</form>
在 onChange() 中,this
不会绑定到组件,我无法调用this.setState
,所以我用 onChange={() => this.handleChange} 绑定它。
for onSubmit()
,我有同样的绑定问题,但是当我绑定它时,不会调用处理程序,并且会重新加载页面。提交时绑定到组件的正确方法是什么?
TIA
完整示例:
class CbList extends React.Component {
constructor() {
super();
this.state = {
newTitle: '',
list: []
};
}
handleChange(event) {
this.setState(Object.assign({},
this.state,
{ newTitle: event.target.value }));
}
handleSubmit(event) {
this.addBlock(this.state.newTitle);
event.preventDefault();
return false;
}
render() {
return (
<div className="cb-list">
<div>
<form onSubmit={() => this.handleSubmit}>
<input type="text" value={this.state.value} onChange={() => this.handleChange}
placeholder="Enter new title"/>
<input type="submit" value="Submit" />
</form>
</div>
</div>
);
}
addBlock(title) {
let updatedList = this.state.list.concat({ title: title });
this.setState({ list: updatedList })
}
};
$(function() {
ReactDOM.render(<CbList/>, $('#home').get(0));
});
您忘记调用函数:
onSubmit={()=>this.handleSubmit}
应该
onSubmit={()=>this.handleSubmit()}
或者,只需传递对该函数的引用:
onSubmit={this.handleSubmit}
但您需要在构造函数中绑定函数(如表单示例链接中所示):
this.handleSubmit = this.handleSubmit.bind(this);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)