Reactjs 反应:无法从表单选择上的onchange事件处理程序设置状态
我有一个react组件,它的结构如下。 我想在用户从下拉列表中选择时捕获他们的选择 我尝试时收到以下错误消息: “未捕获的TypeError:无法读取未定义的属性'setState'” 我在遵循文档中的示例,那么我错在哪里呢Reactjs 反应:无法从表单选择上的onchange事件处理程序设置状态,reactjs,Reactjs,我有一个react组件,它的结构如下。 我想在用户从下拉列表中选择时捕获他们的选择 我尝试时收到以下错误消息: “未捕获的TypeError:无法读取未定义的属性'setState'” 我在遵循文档中的示例,那么我错在哪里呢 export default class SearchPage extends Component { .... handleChange(e) { this.setState({ params: { ...this.st
export default class SearchPage extends Component {
....
handleChange(e) {
this.setState({
params: {
...this.state.params,
[e.target.name]: e.target.value
}
})
}
render() {
const { county, cause, activity } = this.state
return (
<div className="searchpage">
<form>
<select name="county" onChange={this.handleChange}
.....
导出默认类SearchPage扩展组件{
....
手变(e){
这是我的国家({
参数:{
…this.state.params,
[e.target.name]:e.target.value
}
})
}
render(){
const{county,cause,activity}=this.state
返回(
handleChange
未绑定到实例。您需要使用内联箭头函数,该函数将以词汇方式捕获此
<select name="county" onChange={e => this.handleChange(e)}
这是避免将函数绑定到.bind(This)或某些修饰符或创建类似()=>myfunc()的匿名函数的另一个技巧
然后,您可以在内部随意使用它我目前正在使用.bind(this)解决方案,但它会抛出linting错误,显然使用.bind(this)对性能非常有害似乎是最好的选择-谢谢Yury!如果在构造函数中绑定一次就可以了。实际上这是一个很好的方法,只是在构造函数中尝试了绑定,效果很好
constructor() {
super();
this.handleChange = this.handleChange.bind(this);
}
handleChange => (e) { }