Amânarea reacțiilor cu eventReactive()
Cadrul de programare reactivă din Shiny este conceput astfel încât orice modificare a intrărilor să actualizeze automat rezultatele care depind de acestea. Uneori, însă, poate vrei să controlezi explicit evenimentul care declanșează actualizarea.
Funcția eventReactive() este folosită pentru a calcula o valoare reactivă care se actualizează doar ca răspuns la un eveniment specific.
rval_x <- eventReactive(input$event, {
# calculations
})
Acest exercițiu face parte din cursul
Crearea aplicațiilor web cu Shiny în R
Instrucțiuni pentru exercițiu
- Folosește
eventReactive()pentru a amâna calculul BMI până când utilizatorul face clic pe buton.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
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)