eventReactive() ile tepkileri geciktirme
Shiny'nin tepkisel programlama yapısı, girdi değerlerindeki herhangi bir değişikliğin buna bağlı çıktıları otomatik olarak güncelleyecek şekilde tasarlanmıştır. Bazı durumlarda, güncellemeyi tetikleyen olayı özellikle kontrol etmek isteyebiliriz.
eventReactive() fonksiyonu, yalnızca belirli bir olaya yanıt olarak güncellenen tepkisel bir değer hesaplamak için kullanılır.
rval_x <- eventReactive(input$event, {
# hesaplamalar
})
Bu egzersiz, kursun bir parçasıdır
R ile Shiny Kullanarak Web Uygulamaları Geliştirme
Egzersiz talimatları
- Kullanıcı düğmeye tıklayana kadar BMI hesaplamasının çalışmasını geciktirmek için
eventReactive()kullan.
Uygulamalı etkileşimli egzersiz
Bu egzersizi bu örnek kodu tamamlayarak deneyin.
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)