Reactive Utilities

getOwner 获取所有者

编辑此页面
import { getOwner } from "solid-js"
import type { Owner } from "solid-js"
function getOwner(): Owner

获取当前运行代码所属的响应式作用域,例如,用于在当前作用域之外的后续 runWithOwner 调用中传递。

在内部,计算(效果、备忘录等)会创建从其所有者一直到由 createRootrender 创建的根所有者的所有者。 特别是,这个所有权树让 Solid 能够通过遍历其子树并调用所有 onCleanup 回调来自动清理已处理的计算。 例如,当 createEffect 的依赖项发生变化时,该效果会在再次运行效果函数之前调用所有后代的 onCleanup 回调。 调用 getOwner 会返回负责处理当前执行块的当前所有者节点。

组件不是计算,所以不会创建所有者节点,但它们通常是从会创建所有者的 createEffect 中渲染的,所以结果类似:当组件被卸载时,所有后代的 onCleanup 回调都会被调用。 从组件作用域调用 getOwner 会返回负责渲染和卸载该组件的所有者。

注意,拥有响应式作用域并不一定意味着正在追踪。 例如,untrack 会在函数执行期间关闭追踪(而不创建新的响应式作用域),通过 JSX 创建的组件(<Component ...>)也是如此。

报告此页面问题