ÎncepețiÎncepe gratuit

Declanșează reacții cu observeEvent()

Uneori vrei să execuți o acțiune ca răspuns la un eveniment. De exemplu, poate vrei să permiți utilizatorului să descarce un tabel ca fișier CSV atunci când apasă un buton „Descarcă". Sau vrei să afișezi o notificare sau un dialog modal ca răspuns la un clic.

Funcția observeEvent() îți permite să faci exact asta. Acceptă două argumente:

  1. Evenimentul la care vrei să reacționezi.
  2. Funcția care trebuie apelată ori de câte ori apare evenimentul.

În acest exercițiu, vei folosi observeEvent() pentru a afișa un dialog modal cu text de ajutor, atunci când utilizatorul apasă pe un buton etichetat „Help". Textul de ajutor a fost deja atribuit variabilei bmi_help_text.

Acest exercițiu face parte din cursul

Crearea aplicațiilor web cu Shiny în R

Vezi cursul

Instrucțiuni pentru exercițiu

  • UI:
    • Adaugă un buton de acțiune numit 'show_help', cu eticheta "Help". Este posibil să fie nevoie să derulezi în jos sau să restrângi consola pentru a vedea UI-ul.
  • Server:
    • Decomentează codul # showModal ...
    • Îngloba showModal(...) în observeEvent() astfel încât textul de ajutor să fie afișat când utilizatorul apasă pe butonul de ajutor

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 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)
Editează și rulează codul