在我的项目中,一些组件生命周期钩子方法没有this._super(...arguments)
,例如didReceiveAttrs
,didUpdateAttrs
,didRender
,didInsertElement
和willDestroyElement
。
但我没有遇到任何问题。我应该改为包含还是不包括?
我知道如果我们覆盖init
这样的框架类,请确保在我们的init声明中调用Ember.Component
!如果我们不这样做,Ember可能没有机会进行重要的设置工作,我们会在您的应用程序中看到奇怪的行为。 (ref)
答案 0 :(得分:5)
为每个生命周期挂钩调用this._super
始终不是强制性。但是,有时你需要它,有时候你不需要它。在实际需要时由于缺少_super
调用而导致的错误会导致通常难以发现或调试的错误。因此,建议始终称之为保持安全。如果你打电话给它并且不需要它,它将什么都不做,所以你没有做任何事情。
我想这是一个额外的代码行,但它确实没有任何缺点,除了它会带你输入它的5秒。
对于相关对话,请参阅: Deprecate the usage of Ember.on for Component's lifecycle events.