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

Глобальный жизненный цикл

  • 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)})

Что сообщает событие

LifeCycleChanged сообщает глобальный этап Univer. Например, загрузка B после глобального Ready вызывает его onReady(), но не создаёт ещё одно глобальное событие Ready.

При добавлении слушателя его обработчик может сразу получить текущий этап, включая Starting. Чтобы просто узнать текущий этап, вызовите univerAPI.getCurrentLifecycleStage() напрямую.

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

TypeScript
disposable.dispose()

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

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

Загрузить B на · Rendered
StartingГлобальноПлагин AНе загруженЗагрузкаStartingReadyRenderedSteadyПлагин BНе загруженЗагрузкаStartingReadyRenderedSteady
Глобально: StartingГлобально: Starting · 1 / 14

Синхронные вызовы показаны в замедленном темпе.

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

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

Насколько полезно это руководство?

© 2026 DreamNum Co., Ltd.