Ember组件生命周期挂钩方法 - 是否必须调用super?

时间:2016-12-07 06:54:24

标签: javascript ember.js

在我的项目中,一些组件生命周期钩子方法没有this._super(...arguments),例如didReceiveAttrsdidUpdateAttrsdidRenderdidInsertElementwillDestroyElement。 但我没有遇到任何问题。我应该改为包含还是不包括?

我知道如果我们覆盖init这样的框架类,请确保在我们的init声明中调用Ember.Component!如果我们不这样做,Ember可能没有机会进行重要的设置工作,我们会在您的应用程序中看到奇怪的行为。 (ref

1 个答案:

答案 0 :(得分:5)

为每个生命周期挂钩调用this._super 始终不是强制性。但是,有时你需要它,有时候你不需要它。在实际需要时由于缺少_super调用而导致的错误会导致通常难以发现或调试的错误。因此,建议始终称之为保持安全。如果你打电话给它并且不需要它,它将什么都不做,所以你没有做任何事情。

我想这是一个额外的代码行,但它确实没有任何缺点,除了它会带你输入它的5秒。

对于相关对话,请参阅: Deprecate the usage of Ember.on for Component's lifecycle events.