Reacties uitstellen met eventReactive()
Shiny's reactieve programmeerframework is zo ontworpen dat elke wijziging in inputs automatisch de outputs bijwerkt die daarvan afhangen. In sommige situaties wil je misschien expliciet bepalen welke trigger de update veroorzaakt.
De functie eventReactive() wordt gebruikt om een reactieve waarde te berekenen die alleen
wordt bijgewerkt als reactie op een specifieke gebeurtenis.
rval_x <- eventReactive(input$event, {
# berekeningen
})
Deze oefening maakt deel uit van de cursus
Webapplicaties bouwen met Shiny in R
Oefeninstructies
- Gebruik
eventReactive()om het berekenen van de BMI pas uit te voeren nadat de gebruiker op de knop klikt.
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 height (in m)', 1.5, 1, 2, step = 0.1),
numericInput('weight', 'Enter weight (in Kg)', 60, 45, 120),
actionButton("show_bmi", "Show BMI")
),
mainPanel(
textOutput("bmi")
)
)
)
server <- function(input, output, session) {
# MODIFY CODE BELOW: Use eventReactive to delay the execution of the
# calculation until the user clicks on the show_bmi button (Show BMI)
rval_bmi <- reactive({
input$weight/(input$height^2)
})
output$bmi <- renderText({
bmi <- rval_bmi()
paste("Hi", input$name, ". Your BMI is", round(bmi, 1))
})
}
shinyApp(ui = ui, server = server)