Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 反应:无法从表单选择上的onchange事件处理程序设置状态_Reactjs - Fatal编程技术网

Reactjs 反应:无法从表单选择上的onchange事件处理程序设置状态

Reactjs 反应:无法从表单选择上的onchange事件处理程序设置状态,reactjs,Reactjs,我有一个react组件,它的结构如下。 我想在用户从下拉列表中选择时捕获他们的选择 我尝试时收到以下错误消息: “未捕获的TypeError:无法读取未定义的属性'setState'” 我在遵循文档中的示例,那么我错在哪里呢 export default class SearchPage extends Component { .... handleChange(e) { this.setState({ params: { ...this.st

我有一个react组件,它的结构如下。 我想在用户从下拉列表中选择时捕获他们的选择

我尝试时收到以下错误消息:

“未捕获的TypeError:无法读取未定义的属性'setState'”

我在遵循文档中的示例,那么我错在哪里呢

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) { }