Перейти к содержанию

getOwner

1
function getOwner(): Owner;

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

Внутри Solid вычисления (эффекты, заметки и т.д.) создают владельцев, которые являются дочерними по отношению к своему владельцу, вплоть до корневого владельца, созданного с помощью createRoot или render. В частности, это дерево владельцев позволяет Solid автоматически очищать удаленные вычисления, обходя их поддеревья и вызывая все обратные вызовы onCleanup. Например, когда изменяются зависимости createEffect, эффект вызывает все последующие вызовы onCleanup перед повторным запуском функции эффекта. Вызов getOwner возвращает текущий узел-владелец, отвечающий за утилизацию текущего блока выполнения.

Компоненты не являются вычислениями, поэтому не создают узла-владельца, но они обычно выводятся из createEffect, который это делает, поэтому результат будет аналогичным: когда компонент размонтируется, вызываются все последующие вызовы onCleanup. Вызов getOwner из области видимости компонента возвращает владельца, который отвечает за рендеринг и размонтирование этого компонента.

Обратите внимание, что владелец реактивной области видимости не обязательно отслеживает. Например, untrack отключает отслеживание на время работы функции (без создания нового реактивного диапазона), как и компоненты, созданные с помощью JSX (<Component ...>).

Ссылки

Комментарии