Scope API
import { type Scope, fork } from "effector";
const scope = fork();Scope — это полностью изолированный экземпляр приложения.
Основное назначение скоупа связано с SSR (Server-Side Rendering), но не ограничивается только этим случаем использования.
Скоуп содержит независимую копию всех юнитов (включая связи между ними), а также базовые методы для работы с ними.
Если вы хотите глубже разобраться в скоупах, ознакомьтесь с отличной статьёй про изолированыне контексты.
У нас также есть несколько гайдов связанных со скоупом:
Особенности скоупов
- Существует несколько правил, которые нужно соблюдать, чтобы успешно работать со скоупом.
- Скоуп можно потерять — чтобы этого избежать, используйте scopeBind.
Методы скоупа
.getState($store)
Возвращает значение стора в данном скоупе:
- Формула
const scope: Scope;const $value: Store<T> | StoreWritable<T>;
const value: T = scope.getState($value);- Тип
scope.getState<T>(store: Store<T>): T;- Возвращает
Значение стора.
- Пример
Создадим два экземпляра приложения, вызовем события в каждом из них и проверим значение стора $counter в обоих случаях:
import { createStore, createEvent, fork, allSettled } from "effector";
const inc = createEvent();const dec = createEvent();const $counter = createStore(0);
$counter.on(inc, (value) => value + 1);$counter.on(dec, (value) => value - 1);
const scopeA = fork();const scopeB = fork();
await allSettled(inc, { scope: scopeA });await allSettled(dec, { scope: scopeB });
console.log($counter.getState()); // => 0console.log(scopeA.getState($counter)); // => 1console.log(scopeB.getState($counter)); // => -1Связанные API и статьи
- 
API - scopeBind– Метод для привязки юнита к скоупу
- fork– Оператор для создания скоупа
- allSettled– Метод для вызова юнита в указанном скоупе и ожидания завершения всей цепочки эффектов
- serialize– Метод для получения сериализованных значений сторов
- hydrate– Метод для гидрации сериализованных данных
 
- 
Статьи 
Документация на английском языке - самая актуальная, поскольку её пишет и обновляет команда effector. Перевод документации на другие языки осуществляется сообществом по мере наличия сил и желания.
Помните, что переведенные статьи могут быть неактуальными, поэтому для получения наиболее точной и актуальной информации рекомендуем использовать оригинальную англоязычную версию документации.