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
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)