2016-12-07 56 views
0

在我的項目中,某些組件生命週期鉤子方法沒有this._super(...arguments),例如didReceiveAttrs,didUpdateAttrs,didRender,didInsertElementwillDestroyElement。 但我沒有遇到任何問題。我應該改變爲包含或不包含?Ember組件生命週期鉤子方法 - 是否必須調用super?

我知道如果我們覆蓋init的框架類如Ember.Component,一定要在我們的init聲明中調用this._super(...arguments)!如果我們不這樣做,Ember可能沒有機會做重要的設置工作,我們會在您的應用程序中看到奇怪的行爲。 (ref

+3

變化,包括它,如果掛鉤的行爲在未來修改你將不得不回去,並添加他們。 –

回答

5

它不是強制性調用this._super總是爲每一個生命週期掛鉤。但是,有時你需要它,有時你不需要。由於缺少_super調用而導致的錯誤實際上很有必要,從而導致通常難以發現或調試的錯誤。因此,建議始終稱它爲保持安全。如果你稱它爲不需要的,它就什麼都不會做,所以你不會因此而失去任何東西。

我想這是一個額外的代碼行,但它確實沒有任何缺點,除了它會讓你鍵入它的5秒。

對於相關的談話看: Deprecate the usage of Ember.on for Component's lifecycle events.

相關問題