BaşlayınÜcretsiz Başlayın

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:

  1. Yanıt vermek istediğin olay.
  2. 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ır
Kursu Görüntüle

Egzersiz 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(...) ifadesini observeEvent() 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)
Kodu Düzenle ve Çalıştır