在组件中,我已经看到了执行回调的不同方法。之间有什么区别?
<MyButton onPress={ () => {doSomething(data)} }>
和
<MyButton onPress={ this.doSomething.bind(this) }>
该代码块使用ES6箭头功能;这是在javascript中声明函数的另一种方式。另外,thisin arrow函数的作用域取决于函数的创建位置,而this默认情况下,普通作用域规则取决于 函数的调用方式 。
this
该语句调用doSomething方法。但是由于事件注册是在不同的元素上完成的,因此Scope的范围doSomething是不同的,并且通过使用bindjavascript中的方法被强制绑定。
doSomething
bind
同样,在第二种方法中,您没有传递data参数,可以使用第二个参数将其传递给如下所示的方法。
<MyButton onPress={ this.doSomething.bind(this, data)} }>