繁体   English   中英

React Native:如果你使用箭头函数,是否需要使用 bind(this)?

[英]React Native: if you use arrow functions, is there ever a need to use bind(this)?

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

简单回答,NO,如果你使用ES6语法声明class方法,那么其中的this会自动绑定到当前的class实例:

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

这就是 javascript 使用this关键字的原因和方式。 所以你不需要。 并且提到这一切都取决于你,假设你以非 ES6 方式声明一个方法,那么你必须绑定它。

希望能帮助到你。 毫无疑问

没有必要,它也不会完成任何事情。 箭头函数无法更改其this ,因此.bind()的第一个参数将被完全忽略。

.bind()仍然可以用于将 arguments 绑定到 function 调用,例如: setTimeout(myFunction.bind(null, myVariable), 100) 当然,这与编写setTimeout(() => myFunction(myVariable), 100)本质上是一样的

使用它们仍然更好,您甚至可以使用为您完成工作的模块(反应自动绑定)。

因为假设您将方法( callback()作为概率)从父组件传递给子组件....

当您从带有或不带箭头的子组件内部调用该方法时,您会收到错误消息(不是未定义,而是错误的,并且可能找不到父组件中的某些属性,例如this.state.oncallback ,这将是callback()的主要目的)因为词法环境将是子组件之一。

所以首先将它绑定到父级几乎总是正确的做法:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM