Kích hoạt phản ứng với observeEvent()
Đôi khi bạn muốn thực hiện một hành động để phản hồi lại một sự kiện. Ví dụ, bạn có thể muốn cho phép người dùng ứng dụng tải xuống một bảng dưới dạng tệp CSV khi họ bấm vào nút "Download". Hoặc bạn có thể muốn hiển thị một thông báo hoặc hộp thoại modal khi có một lần bấm.
Hàm observeEvent() cho phép bạn làm điều này. Hàm nhận hai đối số:
- Sự kiện bạn muốn phản hồi.
- Hàm sẽ được gọi mỗi khi sự kiện xảy ra.
Trong bài tập này, bạn sẽ dùng observeEvent() để hiển thị một hộp thoại modal với văn bản trợ giúp khi người dùng bấm vào nút có nhãn "Help". Văn bản trợ giúp đã
được gán cho biến bmi_help_text.
Bài tập này là một phần của khóa học
Xây dựng ứng dụng web với Shiny trong R
Hướng dẫn bài tập
- UI:
- Thêm một action button tên 'show_help', có nhãn "Help". Bạn có thể cần cuộn xuống hoặc thu gọn bảng điều khiển để xem UI.
- Server:
- Bỏ comment đoạn mã
# showModal ... - Bao
showModal(...)trongobserveEvent()để văn bản trợ giúp được hiển thị khi người dùng bấm vào nút trợ giúp
- Bỏ comment đoạn mã
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
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)