# ライフサイクル

- Human documentation: [https://docs.univer.ai/ja-JP/guides/slides/getting-started/lifecycle](https://docs.univer.ai/ja-JP/guides/slides/getting-started/lifecycle)

- Agent Markdown: [https://docs.univer.ai/ja-JP/guides/slides/getting-started/lifecycle.md](https://docs.univer.ai/ja-JP/guides/slides/getting-started/lifecycle.md)

- Requested language: `ja-JP`

- Content language: `ja-JP`

- Documentation version: `1.2.0`

- Source: [slides/getting-started/lifecycle.ja-JP.mdx](https://github.com/dream-num/documentation/blob/dev/content/guides/slides/getting-started/lifecycle.ja-JP.mdx)

---

## グローバルライフサイクル

* **Starting**: 初期化中。業務ユニットは未作成です。
* **Ready**: 最初の業務ユニットが作成済み。追加作成では再発火しません。
* **Rendered**: 標準 UI の初回レンダリング切り替えが完了。全非同期コンテンツの準備は保証しません。
* **Steady**: 標準 UI が Rendered 後に遅延して移行。全非同期処理の完了は待ちません。

### Facade API

```typescript
const currentStage = univerAPI.getCurrentLifecycleStage()

const disposable = univerAPI.addEvent(univerAPI.Event.LifeCycleChanged, ({ stage }) => {
  console.log(stage)
})
```

> [!WARNING: イベントが通知する対象]
> `LifeCycleChanged` は Univer のグローバル段階を通知します。例えば、グローバル段階が `Ready` になった後に B を読み込むと、B の `onReady()` は呼ばれますが、グローバルな `Ready` イベントは再発火しません。
> 
> リスナーを追加すると、`Starting` を含む現在の段階がコールバックにすぐ届く場合があります。現在の段階を確認するだけなら、`univerAPI.getCurrentLifecycleStage()` を直接呼び出してください。

リスナーを削除するには、返却された `disposable` オブジェクトを利用します。

```typescript
disposable.dispose()
```

## プラグインのライフサイクルフック

プラグインは読み込み時に `onStarting()` を実行し、現在のグローバル段階まで追いつきます。B の読み込み段階を選び、A との呼び出し順序を比較してください。



汎用プラグインは登録時、業務タイプのプラグインは通常そのタイプの最初のユニット構築前に読み込まれます。起動済みタイプへの追加登録は遅延してまとめて読み込まれます。依存関係により早く読み込まれる場合もあります。

各バッチは依存順、段階順に同期的にフックを呼び、非同期処理は待ちません。ユニット、DOM、リソースの準備は個別に確認してください。
