Низкоуровневый метод для уничтожения юнитов и их связей
Формула
clearNode(unit: Unit): void
clearNode(unit: Unit, config: {deep?: boolean}): void
Аргументы
-
unit
: Любой юнит включая домены и scope. Переданный юнит будет уничтожен и удалён из памяти -
config?
: Объект конфигурации-
deep?
: booleanГлубокое удаление. Уничтожает юнит и все его производные
-
Возвращает
void
Примеры
Пример удаления стора
import { createStore, createEvent, clearNode } from "effector";
const inc = createEvent();
const store = createStore(0).on(inc, (x) => x + 1);
inc.watch(() => console.log("inc called"));
store.watch((x) => console.log("store state: ", x));
// => store state: 0
inc();
// => inc called
// => store state: 1
clearNode(store);
inc();
// => inc called
Пример с deep
import { createStore, createEvent, clearNode } from "effector";
const inc = createEvent();
const trigger = inc.prepend(() => {});
const store = createStore(0).on(inc, (x) => x + 1);
trigger.watch(() => console.log("trigger called"));
inc.watch(() => console.log("inc called"));
store.watch((x) => console.log("store state: ", x));
// => store state: 0
trigger();
// => trigger called
// => inc called
// => store state: 1
clearNode(trigger, { deep: true });
trigger();
// no reaction
inc();
// no reaction!
// all units, which depend on trigger, are erased
// including inc and store, because it depends on inc
Перевод поддерживается сообществом
Документация на английском языке - самая актуальная, поскольку её пишет и обновляет команда effector. Перевод документации на другие языки осуществляется сообществом по мере наличия сил и желания.
Помните, что переведенные статьи могут быть неактуальными, поэтому для получения наиболее точной и актуальной информации рекомендуем использовать оригинальную англоязычную версию документации.