# Жизненный цикл

- Human documentation: [https://docs.univer.ai/ru-RU/guides/sheets/getting-started/lifecycle](https://docs.univer.ai/ru-RU/guides/sheets/getting-started/lifecycle)

- Agent Markdown: [https://docs.univer.ai/ru-RU/guides/sheets/getting-started/lifecycle.md](https://docs.univer.ai/ru-RU/guides/sheets/getting-started/lifecycle.md)

- Requested language: `ru-RU`

- Content language: `ru-RU`

- Documentation version: `1.2.0`

- Source: [sheets/getting-started/lifecycle.ru-RU.mdx](https://github.com/dream-num/documentation/blob/dev/content/guides/sheets/getting-started/lifecycle.ru-RU.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. Например, загрузка B после глобального `Ready` вызывает его `onReady()`, но не создаёт ещё одно глобальное событие `Ready`.
> 
> При добавлении слушателя его обработчик может сразу получить текущий этап, включая `Starting`. Чтобы просто узнать текущий этап, вызовите `univerAPI.getCurrentLifecycleStage()` напрямую.

Чтобы удалить обработчик, используйте возвращенный объект `disposable`:

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

## Хуки жизненного цикла плагинов

Плагин вызывает `onStarting()` при загрузке, затем проходит этапы до текущего глобального. Выберите этап загрузки B и сравните его вызовы с A.



Общие плагины загружаются при регистрации; плагины бизнес-типа — обычно до создания первой единицы этого типа. Добавления к уже запущенному типу загружаются отложенной партией. Явные зависимости могут ускорить загрузку.

Каждая партия вызывает хуки синхронно, по этапам и в порядке зависимостей, не ожидая асинхронных задач. Готовность конкретной единицы, DOM или ресурса проверяйте отдельно.
