Zacznij terazZacznij za darmo

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

Zobacz kurs

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)
Edytuj i uruchom kod