getOwner
Edit this pageGets the reactive scope that owns the currently running code, e.g., for passing into a later call to runWithOwner
outside of the current scope.
Internally, computations (effects, memos, etc.) create owners which are children of their owner, all the way up to the root owner created by createRoot
or render
.
In particular, this ownership tree lets Solid automatically clean up a disposed computation by traversing its subtree and calling all onCleanup
callbacks.
For example, when a createEffect's dependencies change, the effect calls all descendant onCleanup
callbacks before running the effect function again.
Calling getOwner
returns the current owner node that is responsible for disposal of the current execution block.
Components are not computations, so do not create an owner node, but they are typically rendered from a createEffect
which does, so the result is similar: when a component gets unmounted, all descendant onCleanup
callbacks get called.
Calling getOwner
from a component scope returns the owner that is responsible for rendering and unmounting that component.
Note that the owning reactive scope isn't necessarily tracking.
For example, untrack turns off tracking for the duration of a function (without creating a new reactive scope), as do components created via JSX (<Component ...>
).