这个问题与使用React时类似。是否最好在构造函数中使用胖箭头函数或绑定函数?但是有点不同。您可以将函数绑定到this
构造函数中,或者仅在构造函数中应用箭头函数。请注意,我只能在项目中使用ES6语法。
1。
class Test extends React.Component{
constructor(props) {
super(props);
this.doSomeThing = this.doSomeThing.bind(this);
}
doSomething() {}
}
2。
class Test extends React.Component{
constructor(props) {
super(props);
this.doSomeThing = () => {};
}
}
这两种方式的优缺点是什么?谢谢。
由于某些原因,选项1通常更可取。
class Test extends React.Component{
constructor(props) {
super(props);
this.doSomeThing = this.doSomeThing.bind(this);
}
doSomething() {}
}
原型方法更易于扩展。子类可以覆盖或扩展doSomething
与
doSomething() {
super.doSomething();
...
}
当实例属性
this.doSomeThing = () => {};
或ES.next class字段
doSomeThing = () => {}
代替使用,调用super.doSomething()
是不可能的,因为该方法未在原型上定义。覆盖它会导致在this.doSomeThing
父和子构造函数中两次分配属性。
混合方法也可以使用原型方法:
class Foo extends Bar {...}
Foo.prototype.doSomething = Test.prototype.doSomething;
原型方法更具可测试性。在类实例化之前,可以对它们进行间谍,添加或模拟:
spyOn(Foo.prototype, 'doSomething').and.callThrough();
在某些情况下,这可以避免比赛条件。
问题内容: 我正在将ReactJS与Babel和Webpack一起使用,并使用ES6以及针对箭头功能的建议类字段。我知道箭头函数通过不重新创建每个呈现的函数(类似于构造函数中的绑定工作方式)来使事情更高效。但是,我不确定100%是否正确使用了它们。以下是我的代码在三个不同文件中的简化部分。 我的代码: Main.js SecondClass.js ThirdClass.js 题: 我上面的代码使用
问题内容: 我正在将ReactJS与Babel和Webpack一起使用,并使用ES6以及针对箭头功能的建议类字段。我知道箭头函数通过不重新创建每个呈现的函数(类似于构造函数中的绑定工作方式)来使事情更高效。但是,我不确定100%是否正确使用了它们。以下是我的代码在三个不同文件中的简化部分。 我的代码: Main.js SecondClass.js ThirdClass.js 题: 我上面的代码使用
问题内容: 鉴于此组件: 如何添加一个无需使用语法即可定义状态的构造函数? 问题答案: 由于它是一个无状态组件,因此没有组件生命周期。因此,您不能指定。 您必须进行扩展以创建有状态组件,然后需要一个构造函数,并且可以使用。 更新 由于阵营16.8.0和挂钩得到了引入有更多的选择。 挂钩是一项新的功能建议,使您无需编写类即可使用状态和其他React>功能。它们作为> v16.8.0的一部分在Reac
问题内容: 我已经在尝试使用ES6一段时间了,但是我遇到了一个小问题。 我真的很喜欢使用箭头功能,只要有可能,我都会使用它们。 但是,看来您无法绑定它们! 这是函数: 这是我要将功能绑定到的对象: 这就是我绑定的方式: 然后我可以打电话给: 哪个将输出此(对象): 凉!可爱!除非它不起作用。而不是输出对象,而是输出对象。 因此,我想知道:您可以绑定箭头功能吗?(如果是这样,如何?) 我已经在Goo
问题内容: 我遇到的情况是,在实例化类时,我只想读取配置文件一次。 假设我有一个名为的方法,该方法读取配置并将其放入对象中。当程序需要使用配置值时,它将使用定义键读取对象。我想知道构造函数仅在生命周期中调用一次。我可以将我的方法放入构造函数中,这将使我有一次调用的好处,还是有另一种机制可以这样做? 问题答案: 更好的设计是 工厂设计模式