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



我知道在 ES6 中,箭头函数具有没有自己的this的属性。这是否意味着不再需要在 React Native 中.bind(this)任何函数?如果没有,你能给我一个你仍然需要使用.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)

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

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

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

因此,首先将其绑定到父级是正确的做法,几乎总是:)

最新更新