import {Meta} from '@storybook/addon-docs/blocks'

<Meta title='@dxtmisha/ru/functional/Classes/EffectScopeGlobal - Глобальная реактивная область'/>

# Класс EffectScopeGlobal

Утилитарный класс, предоставляющий глобальную, отсоединенную (detached) область `effectScope` Vue. Это позволяет запускать реактивные эффекты (watchers, computed properties), которые не привязаны к жизненному циклу конкретного компонента, гарантируя, что они не будут автоматически удалены при размонтировании компонента.

Область инициализируется лениво при первом вызове `run` и создается как «отсоединенная» (`effectScope(true)`), что означает, что она не будет захвачена никакой родительской областью.

## Ключевые особенности

- **Глобальная устойчивость** — эффекты живут столько же, сколько и приложение.
- **Отсоединенная область** — создается с помощью `effectScope(true)`, что предотвращает случайное удаление родительскими областями.
- **Ленивая инициализация** — внутренняя область создается только при первой необходимости.
- **Управление областью** — группирует глобальные реактивные эффекты вместе для организованного управления.
- **Простота использования** — простой статический метод для запуска любой реактивной функции.

## Действия

### `run`

Запускает переданную функцию в глобальной области действия эффекта.

**Параметры:**
- `fn: () => T` — выполняемая функция (обычно содержащая реактивную логику, такую как `watch` или `computed`).

**Возвращает:** `T | undefined`

```typescript
import { EffectScopeGlobal } from '@dxtmisha/functional'
import { watch, ref } from 'vue'

const globalState = ref(0)

// Этот watcher будет сохраняться, даже если создавший его компонент будет размонтирован
EffectScopeGlobal.run(() => {
  watch(globalState, (val) => {
    console.log('Глобальное состояние изменилось:', val)
  })
})
```
