observeEvent() ile tepkileri tetikle
Bazen bir olaya yanıt olarak bir eylem gerçekleştirmek istersin. Örneğin, bir kullanıcı "Download" düğmesine tıkladığında bir tabloyu CSV olarak indirmesine izin vermek isteyebilirsin. Ya da bir tıklamaya yanıt olarak bir bildirim veya modal iletişim penceresi göstermek isteyebilirsin.
observeEvent() fonksiyonu bunu yapmanı sağlar. İki argüman alır:
- Yanıt vermek istediğin olay.
- Olay gerçekleştiğinde çağrılması gereken fonksiyon.
Bu egzersizde, kullanıcı "Help" etiketli bir düğmeye tıkladığında yardım metnini içeren bir modal iletişim penceresi göstermek için observeEvent() kullanacaksın. Yardım metni zaten bmi_help_text değişkenine atanmış durumda.
Bu egzersiz
R ile Shiny Kullanarak Web Uygulamaları Geliştirme
kursunun bir parçasıdırEgzersiz talimatları
- UI:
- 'show_help' adlı, etiketi "Help" olan bir eylem düğmesi ekle. UI'ı görmek için aşağı kaydırman veya konsolu daraltman gerekebilir.
- Server:
# showModal ...kodunun yorumunu kaldır- Yardım metni, kullanıcı yardım düğmesine tıkladığında gösterilecek şekilde
showModal(...)ifadesiniobserveEvent()içine al
Uygulamalı interaktif egzersiz
Bu örnek kodu tamamlayarak bu egzersizi bitirin.
ui <- fluidPage(
titlePanel('BMI Calculator'),
sidebarLayout(
sidebarPanel(
textInput('name', 'Enter your name'),
numericInput('height', 'Enter your height in meters', 1.5, 1, 2),
numericInput('weight', 'Enter your weight in Kilograms', 60, 45, 120),
actionButton("show_bmi", "Show BMI")
# CODE BELOW: Add an action button named "show_help"
),
mainPanel(
textOutput("bmi")
)
)
)
server <- function(input, output, session) {
# MODIFY CODE BELOW: Wrap in observeEvent() so the help text
# is displayed when a user clicks on the Help button.
# Display a modal dialog with bmi_help_text
# MODIFY CODE BELOW: Uncomment code
# showModal(modalDialog(bmi_help_text))
rv_bmi <- eventReactive(input$show_bmi, {
input$weight/(input$height^2)
})
output$bmi <- renderText({
bmi <- rv_bmi()
paste("Hi", input$name, ". Your BMI is", round(bmi, 1))
})
}
shinyApp(ui = ui, server = server)