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
<Kurs>Webanwendungen mit Shiny in R entwickeln</Kurs>Übungsanweisungen
- Verwende
eventReactive(), um die Berechnung des BMI zu verzögern, bis die Nutzerin oder der Nutzer auf den Button klickt.
Interaktive praktische Übung
Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.
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)