react 组件里面的函数应该怎么写?

我按照antd 的例子自己手写的过程中遇到一个例子 搞不明白怎么回事: 贴代码:
一个 onChange事件:在class App extends Component {}组件中:

onChange= (e) => {
    this.setState({
      value:e.target.value
    })
  }

而我写成了一般的

onChange (e) {
    this.setState({
      value:e.target.value
    })
  }

这样就报错了,我想问一下这两种写法 有什么区别吗?

阅读 5k
6 个回答

handleChange(e){

this.setState({
  value: e.target.value
})

}
然后render中调用: onChange={this.handleChange.bind(this)}或者使用ES6的箭头函数onChange={(e)=>this.handleChange(e)}
但是上面在render函数中使用bind或者箭头函数其实会有些问题,因为每一次点击都是一次实例。建议在构造函数中:this.handlechage=this.handleChange.bind(this),然后在render中onChange={this.handleChange}

你不用箭头函数声明的话,可以在构造函数或者调用时候bind(this),不然里面this指向就不对了

onChange: (e) => {
    this.setState({
      value:e.target.value
    })
  }
onChange: (e) => {
    this.setState({
      value: e.target.value
    })
  }

箭头函数是ES6的写法,他不用考虑this的指向问题,而你要写成ES5的话就要为他绑定this

你应该把调用方法的代码也贴出来,这样才好给你解释,上边人说了这么多,我打赌你还是晕乎乎的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题