BaseComponent
というのもあるが、こちらは UI の構成要素のベースクラスで、Component
とは無関係なので注意されたい。
いろんなものが Component
のサブクラスである。
Component
の間には、 addChild
メソッドを使って親子関係を定義できる。子 Component
は、親 Component
が unload
されると自動で自分も unload
される。これを使って、たとえばあるプラグインを構成する各要素を分割して Component
クラスのサブクラスとして定義し、それらを addChild
するという方法がとれる。たとえば Dataview や Datacore はそうしている。
#unexposed Component
オブジェクトは以下の 3 つのプロパティをもつ。
_loaded: boolean
Component
が load
されている(オンになっている)か否か_events: (() => any)[]
Component
が unload
される(オフになる)ときに実行されるお片付けコールバック関数たち。register
メソッドで登録する。register...
メソッドたちも、register
メソッド経由で _events
にコールバックを登録している。_children: Component[]
Component
の子 Component
たちload()
メソッドを直接実行するか、ほかの Component
に addChild
することで(親 Component
がすでに load
されていれば即座に、そうでなければ親が load
されるタイミングで)Component
を load できる(" オン " の状態にできる)。
load
時についでに実行するべき処理は onload()
メソッドをオーバーライドして記述する。デフォルトではなにもしない。典型的には registerEvent
とかをここに書く。
Component
の unload()
メソッドを呼んだのに onunload()
の内容が実行されない...というときは、そもそもその Component
を load
し忘れている可能性が高い。