initComponent
と比較してconstructor
を使用する必要があるのはいつですか?
私はinitComponentを使用してオブジェクトを拡張してきましたが、Ext.defineのドキュメントを見ると、コンストラクターを使用していることがわかります。違いはなんですか?
比較:
Ext.define('My.app.PanelPart2', {
extend: 'My.app.Panel',
constructor: function (config) {
this.callSuper(arguments); // calls My.app.Panel's constructor
//...
}
});
に
Ext.define('My.app.PanelPart2', {
extend: 'My.app.Panel',
initComponent: function (config) {
Ext.apply(this, config);
this.callParent(arguments);
}
});
一部のコンポーネントが初期化されないという事実を認識しています(私はあなたを見ていますExt.data.Store
)、それは普遍的であるはずなので、コンストラクターを書くことだけに傾くように私を導きます。
constructor
はOOPオブジェクトインスタンスを初期化するための標準であり、すべてのExtJSクラス(Ext.define
によって作成されたものすべて)で使用できます。
initComponent
は、コンポーネントを初期化するためのExtJS拡張機能です-Ext.Component
を拡張するクラスです。テンプレート化されたメソッドパターンを使用し、カスタムコンポーネントの初期化の前後にいくつかの標準的な初期化手順を有効にします。このようなもの:
Ext.Component.constructor() {
- init events
- apply config
- create plugins
- ...
- your custom component initialization (initComponent)
- ...
- init plugins
- etc.
}
私のベストプラクティスは、カスタムコンポーネントを作成するときは常にinitComponent
を使用し、ジェネリッククラスの場合のみconstructor
を使用することです。