我知道已经有一些线程,但是我找不到实际的线程。
所以我的问题是,我应该始终使用绑定方法还是箭头函数?
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
}
我的目标是完全理解它。
非常感谢!
扬
答案 0 :(得分:2)
您是对的,这个问题已经被问过很多次了,因为它有很多重复项,所以很可能会被关闭,但是我还是会提供一个简短的答案。
从技术上讲,绑定函数和箭头函数是不同的,但是对于您所谈论的反应世界,它们是相同的,只需创建一个函数即可,该函数绑定到创建它们的实例的上下文中,因此您可以在 instance 变量执行时访问它们。
那么,为什么要麻烦解决两种创建上下文绑定函数的麻烦呢?好吧,即使它们达到相同的效果,您也可以告诉我们.bind
版本更冗长,而且容易出错,因为您可能会忘记在构造函数上绑定函数,因此使用arrow被认为是一种好习惯功能。
React团队没有创建它们,它们是javascript的一部分,必须绑定功能只是该语言底层设计的结果,React只会迫使您弯曲javascript以使其正确地用作OOP语言。 / p>
所以2020年的TL:DR: 这个问题不再相关,使用带有钩子的功能组件,您将没有问题