为了账号安全,请及时绑定邮箱和手机立即绑定

关于react中es5和es6写法中的this

关于react中es5和es6写法中的this

慕标5832272 2018-10-24 13:14:00
es5的代码:es6的代码:我的问题是:为什么es5写法中的onclick事件的处理函数不需要绑定this,但是es6写法中的onclick事件处理函数需要绑定this?es6写法中绑定前的this指向是什么?其实经常看到react中使用的es6需要绑定this,有时候在constructor中绑定再用,其实为什么需要这样的?在constructor中绑定和像上面es6例子中那样绑定有什么差别?为什么es5写法中却不需要绑定呢?
查看完整描述

1 回答

?
杨__羊羊

TA贡献1943条经验 获得超7个赞

因为用ES5的createClass的写法,React会对里面的方法进行this绑定。

而用ES6的extends Component并不会进行this绑定。

解决方法:

  1. 按照你说的,每个方法都进行this.handleClick.bind(this)

  2. 方法定义的时候,用箭头函数定义,ES6会给这个方法自动绑定this

  3. 这么调用也可以: onClick={(e)=>{ this.handleClick(e) }}

上面三种方法都可以在handleClick中获取正确的this


查看完整回答
反对 回复 2018-11-12
  • 1 回答
  • 0 关注
  • 561 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信