[英]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.