React Native最佳实践:2020年bind()vs箭头函数

时间:2020-04-29 19:52:35

标签: react-native


我知道已经有一些线程,但是我找不到实际的线程。 所以我的问题是,我应该始终使用绑定方法还是箭头函数? 2020年它们的利弊是什么?据我了解,至少在2018年,bind方法的性能更好。 另一个问题:我是否应该绑定一些函数,这些函数通过单击就可以在render方法中使用? 这是一个小例子

constructor(super) {
props(super)

this.firstBind = this.firstBind.bind(this);
this.secondBind = this.secondBind.bind(this;
}

render() {
return (
<Button title="First Bind" onClick={this.firstBind} />
<Button title="First arrow" onClick={this.firstArrow} />
)
}

firstArrow = () => {
//some outout
}

secondArrow = async() => {
//fetch some data from a database and output it
}
secondBind() {
//some output
}
async secondBind() {
//fetch some data from a database and output it
}

我的目标是完全理解它。
非常感谢!

1 个答案:

答案 0 :(得分:2)

您是对的,这个问题已经被问过很多次了,因为它有很多重复项,所以很可能会被关闭,但是我还是会提供一个简短的答案。

绑定和箭头功能在React组件中实现相同功能

从技术上讲,绑定函数和箭头函数是不同的,但是对于您所谈论的反应世界,它们是相同的,只需创建一个函数即可,该函数绑定到创建它们的实例的上下文中,因此您可以在 instance 变量执行时访问它们。

但是为什么有两种创建绑定函数的方法呢?

那么,为什么要麻烦解决两种创建上下文绑定函数的麻烦呢?好吧,即使它们达到相同的效果,您也可以告诉我们.bind版本更冗长,而且容易出错,因为您可能会忘记在构造函数上绑定函数,因此使用arrow被认为是一种好习惯功能。

React团队没有创建它们,它们是javascript的一部分,必须绑定功能只是该语言底层设计的结果,React只会迫使您弯曲javascript以使其正确地用作OOP语言。 / p>

好,那你该怎么办?

话虽这么说,react生态系统正在朝着钩子发展,即使负责react的团队不断重复一个钩子并不需要使用钩子,这种趋势很明显,类组件将消失,例如:随着库的更新以使用钩子并保持访问它们的不同方式太麻烦了,它们大多数只使用钩子。

所以2020年的TL:DR: 这个问题不再相关,使用带有钩子的功能组件,您将没有问题