# Ciclo de vida

- Human documentation: [https://docs.univer.ai/es-ES/guides/pdfs/getting-started/lifecycle](https://docs.univer.ai/es-ES/guides/pdfs/getting-started/lifecycle)

- Agent Markdown: [https://docs.univer.ai/es-ES/guides/pdfs/getting-started/lifecycle.md](https://docs.univer.ai/es-ES/guides/pdfs/getting-started/lifecycle.md)

- Requested language: `es-ES`

- Content language: `es-ES`

- Documentation version: `1.2.0`

- Source: [pdfs/getting-started/lifecycle.es-ES.mdx](https://github.com/dream-num/documentation/blob/dev/content/guides/pdfs/getting-started/lifecycle.es-ES.mdx)

---

## Ciclo de vida global

* **Starting**: Inicialización, antes de crear unidades de negocio.
* **Ready**: Se ha creado la primera unidad; las siguientes no vuelven a activar esta etapa.
* **Rendered**: La UI estándar ha realizado su primer cambio de renderizado, sin garantizar todo el contenido asíncrono.
* **Steady**: La UI estándar entra tras un retraso después de Rendered, sin esperar todas las tareas asíncronas.

### API de Facade

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

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

> [!WARNING: Qué comunica el evento]
> `LifeCycleChanged` comunica la etapa global de Univer. Por ejemplo, cargar B después del `Ready` global llama a su `onReady()`, pero no emite otro evento global `Ready`.
> 
> Al añadir un listener, su callback puede recibir inmediatamente la etapa actual, incluido `Starting`. Para consultar la etapa actual, llame directamente a `univerAPI.getCurrentLifecycleStage()`.

Para eliminar un oyente, puede usar el objeto `disposable` devuelto:

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

## Hooks del ciclo de vida de plugins

Un plugin ejecuta `onStarting()` al cargarse y luego alcanza la etapa global actual. Elija cuándo cargar B para comparar sus llamadas con las de A.



Los plugins generales se cargan al registrarse; los de negocio, normalmente antes de construir la primera unidad de su tipo. Los añadidos a un tipo ya iniciado se cargan en un lote diferido. Las dependencias explícitas pueden adelantar la carga.

Cada lote llama a los hooks síncronamente, por etapa y en orden de dependencias, sin esperar tareas asíncronas. Compruebe cada unidad, elemento DOM o recurso antes de acceder a él.
