Zatrzymywanie reakcji za pomocą isolate()
Zazwyczaj samo odczytanie wartości reaktywnej wystarczy, aby utworzyć zależność – zmiana tej wartości powoduje ponowne wykonanie wywołującego wyrażenia. Funkcja isolate() pozwala odczytać wartość reaktywną bez wywoływania ponownego wykonania, gdy ta wartość się zmieni.
W tym ćwiczeniu użyjesz funkcji isolate(), aby zatrzymać reaktywny przepływ.
To ćwiczenie jest częścią kursu
Tworzenie aplikacji internetowych z Shiny w R
Instrukcje do ćwiczenia
- Zaktualizuj kod serwera tak, aby wyjście tekstowe aktualizowało się tylko wtedy, gdy użytkownik zmieni wzrost lub wagę, a NIE imię.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
ui <- fluidPage(
titlePanel('BMI Calculator'),
sidebarLayout(
sidebarPanel(
textInput('name', 'Enter your name'),
numericInput('height', 'Enter your height (in m)', 1.5, 1, 2, step = 0.1),
numericInput('weight', 'Enter your weight (in Kg)', 60, 45, 120)
),
mainPanel(
textOutput("bmi")
)
)
)
server <- function(input, output, session) {
rval_bmi <- reactive({
input$weight/(input$height^2)
})
output$bmi <- renderText({
bmi <- rval_bmi()
# MODIFY CODE BELOW:
# Use isolate to stop output from updating when name changes.
paste("Hi", input$name, ". Your BMI is", round(bmi, 1))
})
}
shinyApp(ui = ui, server = server)