首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >React:无法在窗体select上设置onchange事件处理程序的状态

React:无法在窗体select上设置onchange事件处理程序的状态
EN

Stack Overflow用户
提问于 2016-06-09 11:42:19
回答 2查看 2.5K关注 0票数 1

我有一个像这样构造的react组件。当用户从下拉菜单中选择时,我想捕捉用户的选择。

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

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

我正在学习文档中的例子,那么我哪里出错了呢?

代码语言:javascript
运行
复制
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}
               .....
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-09 11:49:42

handleChange没有绑定到实例。您需要使用内联箭头函数来捕获this

代码语言:javascript
运行
复制
<select name="county" onChange={e => this.handleChange(e)}

或(推荐的方式)在构造函数中绑定方法。

代码语言:javascript
运行
复制
constructor() {
   super();
   this.handleChange = this.handleChange.bind(this);
}
票数 3
EN

Stack Overflow用户

发布于 2016-06-09 11:59:16

这是另一个技巧,以避免将您的函数绑定到.bind(这个)或一些装饰器,或者创建像() => myfunc()这样的匿名函数

代码语言:javascript
运行
复制
handleChange => (e) { }

然后你可以用这个,因为你想在里面

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37725002

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档