构建Polymer 2.0 ES6 Web组件时,会使用以下模式。
constructor() {
super();
}
Here the documentation describes calling the super();
function when defining an element.
However here in the Shop App该模式仅在以下元素中遵循3次:shop-app.html,shop-ripple-container.html,shop-tabs-overlay.html。
我们何时需要致电super()
?该调用何时需要在constructor()
函数内?如the Shop app
super()
的后果是什么?
编辑:
用户(@ 4castle)提出了此问题might be a duplicate of this question。我恭敬地不同意。这个问题涉及Polymer,而另一个涉及React。另一个问题询问传递给super()
函数的参数。这个问题想知道在super()
未被调用时会发生什么以及最佳调用位置(即constructor()
内部)。
答案 0 :(得分:2)
我们何时需要致电
super()
?
super()
调用元素的超类(父类)的构造函数。如果元素的定义定义了一个扩展另一个类的类,而super()
没有显式调用,则该元素默认调用超类的构造函数。
此调用何时需要在
constructor()
函数内?
调用super()
的正确位置在元素的constructor()
方法内。
在Shop应用的情况下,不调用
super()
的后果是什么?
如果是,
class MyElement extends Polymer.Element {...}
与Shop App的情况一样 - 如果未明确调用Polymer.Element
,则默认调用super()
构造函数。
答案 1 :(得分:2)
事实上,调用以下内容以获得超级(父级)的全部好处也是一种很好的做法:
ready() {
super.ready();
}
当组件准备就绪时,它将在Element中调用ready函数。