Scope API

import { type Scope, fork } from "effector";
const scope = fork();

Scope — это полностью изолированный экземпляр приложения. Основное назначение скоупа связано с SSR (Server-Side Rendering), но не ограничивается только этим случаем использования. Скоуп содержит независимую копию всех юнитов (включая связи между ними), а также базовые методы для работы с ними.

скоуп важен

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

Особенности скоупов

  1. Существует несколько правил, которые нужно соблюдать, чтобы успешно работать со скоупом.
  2. Скоуп можно потерять — чтобы этого избежать, используйте 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()); // => 0
console.log(scopeA.getState($counter)); // => 1
console.log(scopeB.getState($counter)); // => -1

Попробовать.

Перевод поддерживается сообществом

Документация на английском языке - самая актуальная, поскольку её пишет и обновляет команда effector. Перевод документации на другие языки осуществляется сообществом по мере наличия сил и желания.

Помните, что переведенные статьи могут быть неактуальными, поэтому для получения наиболее точной и актуальной информации рекомендуем использовать оригинальную англоязычную версию документации.

Соавторы