---
title: "Reactive Values"
output: rmarkdown::html_vignette
vignette: >
%\VignetteIndexEntry{Reactive Values}
%\VignetteEngine{knitr::rmarkdown}
%\VignetteEncoding{UTF-8}
---
```{r, include = FALSE}
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>"
)
```
## Passing values with reactive variables
**Reactive values** are a means of passing data from R to the UI and vice versa.
* `reactive_chr()`, `reactive_lgl()`, `reactive_int()` and `reactive_dbl()` will
create a reactive variable of the given type.
* `reactive_textbox()` is a special variable needed to handle the current
contents of a multiline textbox.
If you are familiar with `shiny`, then reactive values in this package work
in a similar way to `shiny::reactiveVal` objects.
```{r}
library(tickle)
val <- reactive_dbl(1.0)
# To fetch the actual value, call with no argument
val()
# Give an argument to set the value
val(1.23)
val()
```
```{r eval = FALSE}
button_text <- reactive_chr("Hi!")
ui_spec <- tic_window(
tic_button(text = "Hello"), # Plain old boring string
tic_button(textvariable = button_text) # reactive value
)
win <- render_ui(ui_spec)
```
```{r eval = FALSE}
# Now change the reactive variable, and the button text changes
button_text("Goodbye now!")
```