ES6中的箭头函数:<Icon type="setting" onClick={() => this.login()} />
ES5中的bind(this):<Icon type="setting" onClick={this.login.bind(this)} />
关于this问题:
ES5中我们可以采用 3 种方式解决this指向问题:
- var that = this
- 在表达式最后使用 this 指明指向
- 使用 bind(this) 方法
ES6 中的箭头函数则 默认绑定了 this 的指向。也就是说,箭头函数中的 this 取决于在哪里定义,而不是在哪里调用。进一步讲,箭头函数中的 this 就是默认绑定在此函数作用域中了,不可更改。
- 传统函数的 this 是动态的。它取决于 this 怎样被调用。
- 箭头函数的 this 是静态的。它是一个词法(lexical )上的值,它取决于 this 在哪个作用域中定义。