import { withRegion } from "effector";
Метод основан на идее управления памятью на основе регионов (см. Region-based memory management для справки).
Методы
withRegion(unit, callback)
Начиная с
Метод позволяет явно передать владение всеми юнитами (включая связи, созданные с помощью sample
, forward
и т.д.), определенными в callback, на unit
. Как следствие, все созданные связи будут удалены, как только будет вызван clearNode
на Unit.
Формула
withRegion(unit: Unit<T> | Node, callback: () => void): void
Аргументы
unit
: Unit | Node — который будет служить “локальной областью” или “регионом”, владеющим всеми юнитами, созданными внутри предоставленного callback. Обычно узел, созданный методом низкого уровняcreateNode
, оптимален для этого случая.callback
:() => void
— Callback, в котором должны быть определены все соответствующие юниты.
Примеры
import { createNode, createEvent, restore, withRegion, clearNode } from "effector";
const first = createEvent();
const second = createEvent();
const $store = restore(first, "");
const region = createNode();
withRegion(domain, () => {
// Следующие связи, созданные с помощью `sample`, принадлежат предоставленному юниту `domain`
// и будут удалены, как только будет вызван `clearNode` на `domain`.
sample({
clock: second,
target: first,
});
});
$store.watch(console.log);
first("привет");
second("мир");
clearNode(region);
second("не вызовет обновлений `$store`");
Перевод поддерживается сообществом
Документация на английском языке - самая актуальная, поскольку её пишет и обновляет команда effector. Перевод документации на другие языки осуществляется сообществом по мере наличия сил и желания.
Помните, что переведенные статьи могут быть неактуальными, поэтому для получения наиболее точной и актуальной информации рекомендуем использовать оригинальную англоязычную версию документации.