Utlös reaktioner med observeEvent()
Ibland vill du utföra en åtgärd som svar på en händelse. Du kanske vill låta användaren ladda ned en tabell som en CSV-fil när hen klickar på en "Ladda ned"-knapp, eller visa ett meddelande eller en modal dialog som svar på ett klick.
Funktionen observeEvent() gör detta möjligt. Den tar emot två argument:
- Den händelse du vill reagera på.
- Funktionen som ska anropas varje gång händelsen inträffar.
I den här övningen använder du observeEvent() för att visa en modal dialog med hjälptext när användaren klickar på en knapp märkt "Help". Hjälptexten har redan tilldelats variabeln bmi_help_text.
Den här övningen är en del av kursen
Bygg webbapplikationer med Shiny i R
Övningsinstruktioner
- Gränssnitt (UI):
- Lägg till en åtgärdsknapp med namnet 'show_help' och etiketten "Help". Du kan behöva scrolla ned eller minimera konsolen för att se gränssnittet.
- Server:
- Avkommentera raden
# showModal ... - Omslut
showModal(...)iobserveEvent()så att hjälptexten visas när användaren klickar på hjälpknappen
- Avkommentera raden
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
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)