# Cycle de vie

- Human documentation: [https://docs.univer.ai/fr-FR/guides/docs/getting-started/lifecycle](https://docs.univer.ai/fr-FR/guides/docs/getting-started/lifecycle)

- Agent Markdown: [https://docs.univer.ai/fr-FR/guides/docs/getting-started/lifecycle.md](https://docs.univer.ai/fr-FR/guides/docs/getting-started/lifecycle.md)

- Requested language: `fr-FR`

- Content language: `fr-FR`

- Documentation version: `1.2.0`

- Source: [docs/getting-started/lifecycle.fr-FR.mdx](https://github.com/dream-num/documentation/blob/dev/content/guides/docs/getting-started/lifecycle.fr-FR.mdx)

---

## Cycle de vie global

* **Starting**: Initialisation, avant la création d’une unité métier.
* **Ready**: La première unité métier est créée ; les suivantes ne relancent pas cette étape.
* **Rendered**: Le premier changement de rendu du UI standard est effectué, sans garantir la disponibilité de tout contenu asynchrone.
* **Steady**: Le UI standard atteint cette étape après un délai suivant Rendered, sans attendre toutes les tâches asynchrones.

### API Facade

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

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

> [!WARNING: Ce que signale l’événement]
> `LifeCycleChanged` signale l’étape globale de Univer. Par exemple, charger B après le `Ready` global appelle son `onReady()`, sans émettre un nouvel événement global `Ready`.
> 
> À l’ajout d’un écouteur, son callback peut recevoir immédiatement l’étape actuelle, y compris `Starting`. Pour simplement connaître cette étape, appelez directement `univerAPI.getCurrentLifecycleStage()`.

Pour supprimer un écouteur, utilisez l’objet `disposable` renvoyé :

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

## Hooks de cycle de vie des plugins

Un plugin exécute `onStarting()` à son chargement, puis rattrape l’étape globale actuelle. Choisissez quand charger B pour comparer ses appels avec ceux de A.



Les plugins généraux se chargent à l’enregistrement ; les plugins métier, généralement avant la construction de la première unité de leur type. Les ajouts à un type déjà démarré sont chargés en lot différé. Les dépendances explicites peuvent avancer le chargement.

Chaque lot appelle les hooks de façon synchrone, par étape et dans l’ordre des dépendances, sans attendre les tâches asynchrones. Vérifiez chaque unité, élément DOM ou ressource avant de l’utiliser.
