Aan de slagGa gratis aan de slag

Reacties stoppen met isolate()

Normaal gesproken is het simpelweg uitlezen van een reactieve waarde al genoeg om een relatie op te zetten: als de reactieve waarde verandert, wordt de aanroepende expressie opnieuw uitgevoerd. Met de functie isolate() kan een expressie een reactieve waarde lezen zonder een heruitvoering te triggeren wanneer die waarde verandert.

In deze oefening gebruik je isolate() om de reactieve stroom te stoppen.

Deze oefening maakt deel uit van de cursus

Webapplicaties bouwen met Shiny in R

Cursus bekijken

Oefeninstructies

  • Pas de servercode aan zodat de tekstuitvoer alleen wordt bijgewerkt wanneer de gebruiker de lengte of het gewicht wijzigt, en NIET de naam.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

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)
Code bewerken en uitvoeren