Reaktionen mit eventReactive() verzögern
Shinys Reaktivitäts-Framework ist so aufgebaut, dass jede Änderung an Inputs automatisch die davon abhängigen Outputs aktualisiert. In manchen Situationen möchten wir jedoch den Auslöser für diese Aktualisierung explizit steuern.
Die Funktion eventReactive() wird verwendet, um einen reaktiven Wert zu berechnen, der nur
als Reaktion auf ein bestimmtes Ereignis aktualisiert wird.
rval_x <- eventReactive(input$event, {
# Berechnungen
})
Diese Übung ist Teil des Kurses
Webanwendungen mit Shiny in R entwickeln
Anleitung zur Übung
- Verwende
eventReactive(), um die Berechnung des BMI zu verzögern, bis die Nutzerin oder der Nutzer auf den Button klickt.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
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)