我有多个输入字段。当输入某个内容时,我想从所有输入字段调用相同的函数。为了知道事件是从哪个控件触发的,我创建了以下代码。这工作正常,但实际上,我想转发event
以访问event.target.value
属性。这是我的一个组件:
class FreightList extends Component {
constructor(props) {
super(props);
this.state = {
filters : [],
};
this.handleIdKeyUp = this.onFiltersKeyUpHandler.bind(this, event, 'Id');
this.handleCompanyKeyUp = this.onFiltersKeyUpHandler.bind(this, event, 'Company');
}
onFiltersKeyUpHandler(event,filterName) {
//do something
}
render() {
return (
<input type="text" ref="filtersId" onKeyUp={this.handleIdKeyUp.bind(this)} className="form-control minWidth50px" />
<input type="text" ref="filtersCompany" onKeyUp={this.handleCompanyKeyUp.bind(this)} className="form-control minWidth50px" />
)
}
}
现在的问题是,在方法onFiltersKeyUpHandler
中,event.target
属性是null
。我敢肯定…这个密码
this.handleIdKeyUp = this.onFiltersKeyUpHandler.bind(this, event, 'Id');
无效,无法“转发”event
参数,该参数应由handleIdKeyUp
接收。那么,如何将event
参数转发给onFiltersKeyUpHandler
以访问event.target.value
呢?
5条答案
按热度按时间l3zydbqr1#
您不必在构造函数中将该方法绑定到
this
。而是使用箭头功能如下。此外,在onKeyUp
事件中也使用箭头函数。0tdrvxhp2#
您正在构造函数this.handleIdKeyUp = this.onFiltersKeyUpHandler.bind(this,event,'Id')中绑定事件和id;所以在那个时候它显然是空的。你需要在调用它的时候传递它
这要简单得多,甚至不需要
refs
。2sbarzqh3#
我将提供另一种方法来做到这一点。您也可以部分应用
filterName
:ggazkfy84#
编辑
在看到每个人都实现了相同的组件之后,让我们正确地做它:-)
euoag5mw5#
这应该能解决问题