mirror of
https://github.com/rstudio/shiny.git
synced 2026-01-29 08:48:13 -05:00
51 lines
1.3 KiB
R
51 lines
1.3 KiB
R
\name{isolate}
|
|
\alias{isolate}
|
|
\title{Create a non-reactive scope for an expression}
|
|
\usage{
|
|
isolate(expr)
|
|
}
|
|
\arguments{
|
|
\item{expr}{An expression that can access reactive values
|
|
or functions.}
|
|
}
|
|
\description{
|
|
Executes the given expression in a scope where reactive
|
|
values or functions can be read, but they cannot cause
|
|
the reactive scope of the caller to be re-evaluated when
|
|
they change.
|
|
}
|
|
\details{
|
|
Ordinarily, the simple act of reading a reactive value
|
|
causes a relationship to be established between the
|
|
caller and the reactive value, where a change to the
|
|
reactive value will cause the caller to re-execute. (The
|
|
same applies for the act of getting a reactive function's
|
|
value.) The \code{isolate} function lets you read a
|
|
reactive value or function without establishing this
|
|
relationship.
|
|
}
|
|
\examples{
|
|
\dontrun{
|
|
observer(function() {
|
|
input$saveButton # Do take a dependency on input$saveButton
|
|
|
|
# isolate a simple expression
|
|
data <- get(isolate(input$dataset)) # No dependency on input$dataset
|
|
writeToDatabase(data)
|
|
})
|
|
|
|
observer(function() {
|
|
input$saveButton # Do take a dependency on input$saveButton
|
|
|
|
# isolate a whole block
|
|
data <- isolate({
|
|
a <- input$valueA # No dependency on input$valueA or input$valueB
|
|
b <- input$valueB
|
|
c(a=a, b=b)
|
|
})
|
|
writeToDatabase(data)
|
|
})
|
|
}
|
|
}
|
|
|