开始使用免费开始使用

使用 observeEvent() 触发反应

有些时候,您希望在某个事件发生时执行一项操作。 例如,当用户点击一个 "Download" 按钮时,您可能希望让应用将表格下载为 CSV 文件。或者,您可能希望在点击后显示一条通知或一个模态对话框。

observeEvent() 函数可以实现这一点。它接收两个参数:

  1. 您要响应的事件。
  2. 当事件发生时应调用的函数。

在本练习中,您将使用 observeEvent(),当用户点击标记为 "Help" 的按钮时,显示一 个包含帮助文本的模态对话框。帮助文本已经被赋值给变量 bmi_help_text

本练习是课程的一部分

使用 R 构建 Shiny Web 应用

查看课程

练习说明

  • UI:
    • 添加一个名为 'show_help'、标签为 "Help" 的操作按钮。您可能需要向下滚动或折叠控制台以查看 UI。
  • Server:
    • 取消注释 # showModal ... 这行代码。
    • showModal(...) 包裹在 observeEvent() 中,这样当用户点击帮助按钮时就会显示帮助文本。

交互式实操练习

通过完成这段示例代码来试试这个练习。

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)
编辑并运行代码