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

<Meta title='@dxtmisha/ru/functional/# Глобальная область эффектов'/>

# Глобальная область эффектов

Класс **EffectScopeGlobal** предоставляет доступ к единой, долгоживущей области действия эффектов (**EffectScope**) в **Vue 3**. Это позволяет создавать реактивные зависимости (watch, computed), которые не зависят от жизненного цикла конкретных компонентов.

## Особенности

- **Персистентность**: Эффекты, запущенные через этот класс, живут на протяжении всего времени работы приложения.
- **Изоляция**: Позволяет группировать глобальные реактивные процессы в одном месте для предотвращения утечек памяти.
- **Контроль**: Все созданные внутри `run()` зависимости автоматически связываются с глобальным контекстом.

## Примеры использования

Обычно используется для настройки глобальных слушателей или вычисляемых свойств, которые должны быть доступны во всем приложении.

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

const globalState = ref(0)

// 1. Запуск глобального процесса
EffectScopeGlobal.run(() => {
  watch(globalState, (val) => {
    console.log('Глобальное состояние изменилось:', val)
  })
})

// 2. Создание долгоживущих computed-свойств
const persistentValue = EffectScopeGlobal.run(() => {
  return computed(() => globalState.value * 2)
})
```

Этот подход гарантирует, что даже если компонент, инициировавший создание этого `watch`, будет уничтожен (unmounted), наблюдатель продолжит свою работу.
