Reactive domains — domains
getDefaultReactiveDomain() withReactiveDomain(domain, expr) onReactiveDomainEnded(domain, callback, failIfNull = FALSE)
Arguments
domain |
A valid domain object (for example, a Shiny session), or
|
---|---|
expr |
An expression to evaluate under |
callback |
A callback function to be invoked |
failIfNull |
If |
Description
Reactive domains are a mechanism for establishing ownership over reactive primitives (like reactive expressions and observers), even if the set of reactive primitives is dynamically created. This is useful for lifetime management (i.e. destroying observers when the Shiny session that created them ends) and error handling.
Details
At any given time, there can be either a single "default" reactive domain
object, or none (i.e. the reactive domain object is NULL
). You can
access the current default reactive domain by calling
getDefaultReactiveDomain
.
Unless you specify otherwise, newly created observers and reactive
expressions will be assigned to the current default domain (if any). You can
override this assignment by providing an explicit domain
argument to
reactive()
or observe()
.
For advanced usage, it's possible to override the default domain using
withReactiveDomain
. The domain
argument will be made the
default domain while expr
is evaluated.
Implementers of new reactive primitives can use onReactiveDomainEnded
as a convenience function for registering callbacks. If the reactive domain
is NULL
and failIfNull
is FALSE
, then the callback will
never be invoked.