React Native:如果使用箭头函数,有没有必要使用bind(this)?

问题描述 投票:0回答:1

我知道在ES6中,箭头函数有一个特性,就是没有自己的 this. 这是否意味着,不再有任何情况下,你会需要 .bind(this) 在React Native的任何函数上?如果不是,你能给我一个场景,在这个场景中你仍然需要使用 .bind(this)?

javascript react-native ecmascript-6 bind arrow-functions
1个回答
0
投票

简单的回答,NO,如果你使用ES6语法来声明类方法,那么 this 在它们中,将自动绑定到当前的类实例。

class MyComponent extends React.Component {
  myMethod1 = () => {
    ...
  }
  myMethod2 = () => {
    ...
  }
}

这就是为什么javascript要和 this 关键字。所以你不需要这样做。还有,这一切都取决于你,如果你用非 ES6 的方式声明一个方法,那么你必须绑定它。

希望对你有所帮助,如有疑问,请随时联系我们


0
投票

没有必要,也不会有什么效果。箭头函数不能有自己的 this 改变了,所以第一个参数 .bind() 完全被忽略。

.bind() 不过,对于绑定参数到函数调用来说,还是很有用的,例如。setTimeout(myFunction.bind(null, myVariable), 100). 当然,这本质上和写下 setTimeout(() => myFunction(myVariable), 100)


0
投票

还是用它们比较好,你甚至可以用模块来帮你完成这个工作(react autobind)。

因为比如说你通过一个方法(callback() 作为一个概率)从一个父组件到一个子组件......。

当你在子组件内部调用该方法时,无论是否有箭头,你都会得到错误信息(不是没有定义,而是定义错了,可能找不到一些属性,如 this.state.oncallback 的主要目的。callback()),因为词法环境将是子组件的环境。

所以首先将它绑定到父组件上是正确的做法,几乎总是如此 :)

© www.soinside.com 2019 - 2024. All rights reserved.