getOwner¶
1 |
|
Получает реактивную область видимости, которая является владельцем выполняемого в данный момент кода, например, для передачи в последующий вызов runWithOwner
вне текущей области видимости.
Внутри Solid вычисления (эффекты, заметки и т.д.) создают владельцев, которые являются дочерними по отношению к своему владельцу, вплоть до корневого владельца, созданного с помощью createRoot
или render
. В частности, это дерево владельцев позволяет Solid автоматически очищать удаленные вычисления, обходя их поддеревья и вызывая все обратные вызовы onCleanup
. Например, когда изменяются зависимости createEffect, эффект вызывает все последующие вызовы onCleanup
перед повторным запуском функции эффекта. Вызов getOwner
возвращает текущий узел-владелец, отвечающий за утилизацию текущего блока выполнения.
Компоненты не являются вычислениями, поэтому не создают узла-владельца, но они обычно выводятся из createEffect
, который это делает, поэтому результат будет аналогичным: когда компонент размонтируется, вызываются все последующие вызовы onCleanup
. Вызов getOwner
из области видимости компонента возвращает владельца, который отвечает за рендеринг и размонтирование этого компонента.
Обратите внимание, что владелец реактивной области видимости не обязательно отслеживает. Например, untrack отключает отслеживание на время работы функции (без создания нового реактивного диапазона), как и компоненты, созданные с помощью JSX (<Component ...>
).