每当其中一个输入发生变化时,就会触发一个观察表达式。关于反应式表达式的主要区别在于它不产生输出,并且它只应用于其副作用(例如修改 reactiveValues 对象或触发弹出窗口)。

另外,请注意,observe 不会忽略 NULL,因此即使其输入仍为 NULL,它也会触发。默认情况下,observeEvent 会忽略 NULL,这几乎总是可取的。

library(shiny)

ui <- fluidPage(
  headerPanel("Example reactive"),
  
  mainPanel(
    
    # action buttons
    actionButton("button1","Button 1"),
    actionButton("button2","Button 2")
  )
)

server <- function(input, output) {
  
  # observe button 1 press.
  observe({
    input$button1
    input$button2  
    showModal(modalDialog(
      title = "Button pressed",
      "You pressed one of the buttons!"
    ))
  })
}

shinyApp(ui = ui, server = server)