domains {shiny} | R Documentation

## Reactive domains

### 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.

### Usage

    getDefaultReactiveDomain()

    withReactiveDomain(domain, expr)

    onReactiveDomainEnded(domain, callback, failIfNull = FALSE)

### Arguments

`domain` | A valid domain object (for example, a Shiny session), or `NULL`
`expr` | An expression to evaluate under `domain`
`callback` | A callback function to be invoked
`failIfNull` | If `TRUE` then an error is given if the `domain` is `NULL`

### 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.

[Package shiny version 1.0.3 Index]