Fördröj reaktioner med eventReactive()
Shinyns reaktiva programmeringsramverk är utformat så att ändringar i indata automatiskt uppdaterar de utdata som är beroende av dem. I vissa situationer kan det vara önskvärt att explicit styra vilken händelse som utlöser uppdateringen.
Funktionen eventReactive() används för att beräkna ett reaktivt värde som bara uppdateras som svar på en specifik händelse.
rval_x <- eventReactive(input$event, {
# calculations
})
Den här övningen är en del av kursen
Bygg webbapplikationer med Shiny i R
Övningsinstruktioner
- Använd
eventReactive()för att fördröja beräkningen av BMI tills användaren klickar på knappen.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
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)