每當其中一個輸入發生變化時,就會觸發一個觀察表示式。關於反應式表示式的主要區別在於它不產生輸出,並且它只應用於其副作用(例如修改 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)