es6中为什么要bind(this)
2016-12-25 23:46
232 查看
在使用React中 如果使用ES6的Class extends写法 如果onClick绑定一个方法 需要bind(this),
而使用React.createClass方法 就不需要.
请问这是为什么呢
解释:React.createClass 是es5的写法默认是绑定了bind方法,而es6中 新增加了class,绑定的方法需要绑定this,如果是箭头函数就不需要绑定this,用箭头的方式
而使用React.createClass方法 就不需要.
请问这是为什么呢
解释:React.createClass 是es5的写法默认是绑定了bind方法,而es6中 新增加了class,绑定的方法需要绑定this,如果是箭头函数就不需要绑定this,用箭头的方式
第一种写法: _handleClick(e) { console.log(this); } render() { return ( <div> <h1 onClick={this._handleClick.bind(this)}>点击</h1> </div> ); }
第二种写法: constructor(props) { super(props); this._handleClick = this._handleClick.bind(this) } _handleClick(e) { console.log(this); } render() { return ( <div> <h1 onClick={this._handleClick}>点击</h1> </div> ); }
第三种写法: _handleClick = (e) => { // 使用箭头函数(arrow function) console.log(this); } render() { return ( <div> <h1 onClick={this._handleClick}>点击</h1> </div> ); }
相关文章推荐
- es6中为什么要bind(this)
- javascript this 和 es6 箭头函数this 的理解以及call()、apply()、bind()的用法
- bind(this)和es6箭头函数
- React为什么要用 bind才不丢失this
- 关于ES6箭头函数中的this问题
- .owner = THIS_MODULE为什么加“点”的原因
- React事件处理函数中绑定this的bind()函数
- ES6的箭头函数this和普通函数的this区别
- 为什么会有this指针
- 为什么静态成员、静态方法中不能用this和super关键字
- es6和es5中的this指向
- 为什么静态成员、静态方法中不能用this和super关键字
- 为什么this super不能用在static方法中??
- es6与es5 中this的区别
- 慎用 Underscore 的 _.bindAll(this)
- React:ES6:ES7中的6种this绑定方法
- JS中改变this指向的方法(call和apply、bind)
- 为什么要用getBaseContext()方法代替this
- ES6(ECMAScript 6 ) 箭头函数以及js中的this
- main()方法为什么遵循格式:public void main(String[] args);静态方法为什么不能引用this