Component
...

Warning

BaseComponent というのもあるが、こちらは UI の構成要素のベースクラスで、Component とは無関係なので注意されたい。

Obsidian において、なんらかの意味でオン (load) したりオフ (onunload) したりするものを汎用的に表すクラス。

いろんなものが Component のサブクラスである。

Component の間には、 addChild メソッドを使って親子関係を定義できる。子 Component は、親 Componentunload されると自動で自分も unload される。これを使って、たとえばあるプラグインを構成する各要素を分割して Component クラスのサブクラスとして定義し、それらを addChild するという方法がとれる。たとえば DataviewDatacore はそうしている。

#unexposed Component オブジェクトは以下の 3 つのプロパティをもつ。

  • _loaded: boolean
    • この Componentload されている(オンになっている)か否か
  • _events: (() => any)[]
    • この Componentunload される(オフになる)ときに実行されるお片付けコールバック関数たち。
    • 各コールバックは register メソッドで登録する。
    • その他の register... メソッドたちも、register メソッド経由で _events にコールバックを登録している。
  • _children: Component[]
    • この Component の子 Component たち

load
...

load() メソッドを直接実行するか、ほかの ComponentaddChild することで(親 Component がすでに load されていれば即座に、そうでなければ親が load されるタイミングで)Component を load できる(" オン " の状態にできる)。

load 時についでに実行するべき処理は onload() メソッドをオーバーライドして記述する。デフォルトではなにもしない。典型的には registerEvent とかをここに書く。

Note

Componentunload() メソッドを呼んだのに onunload() の内容が実行されない...というときは、そもそもその Componentload し忘れている可能性が高い。