我知道在ES6中,箭头函数有一个特性,就是没有自己的 this
. 这是否意味着,不再有任何情况下,你会需要 .bind(this)
在React Native的任何函数上?如果不是,你能给我一个场景,在这个场景中你仍然需要使用 .bind(this)
?
简单的回答,NO,如果你使用ES6语法来声明类方法,那么 this
在它们中,将自动绑定到当前的类实例。
class MyComponent extends React.Component {
myMethod1 = () => {
...
}
myMethod2 = () => {
...
}
}
这就是为什么javascript要和 this
关键字。所以你不需要这样做。还有,这一切都取决于你,如果你用非 ES6 的方式声明一个方法,那么你必须绑定它。
希望对你有所帮助,如有疑问,请随时联系我们
没有必要,也不会有什么效果。箭头函数不能有自己的 this
改变了,所以第一个参数 .bind()
完全被忽略。
.bind()
不过,对于绑定参数到函数调用来说,还是很有用的,例如。setTimeout(myFunction.bind(null, myVariable), 100)
. 当然,这本质上和写下 setTimeout(() => myFunction(myVariable), 100)
还是用它们比较好,你甚至可以用模块来帮你完成这个工作(react autobind)。
因为比如说你通过一个方法(callback()
作为一个概率)从一个父组件到一个子组件......。
当你在子组件内部调用该方法时,无论是否有箭头,你都会得到错误信息(不是没有定义,而是定义错了,可能找不到一些属性,如 this.state.oncallback
的主要目的。callback()
),因为词法环境将是子组件的环境。
所以首先将它绑定到父组件上是正确的做法,几乎总是如此 :)