从自定义 html 输入创建闪亮的输出

Creating shiny outputs from custom html inputs

为什么当我使用带有相应 ID 的 tags$buttonobserveEvent() 没有被触发,但是当我使用带有 inputId 的 actionButton 时却触发了。区别在哪里?我怎样才能使我的自定义 html tags$button 成为实际的“事件”?

这不起作用:

library(shiny)
if (interactive()) {
  options(device.ask.default = FALSE)
  
  ui = fluidPage(
    
    tags$button(id = "action", "BTN"),
    plotOutput(outputId = "plot"))    
  
  server = function(input, output, session){
    
    observeEvent(input$action, {
      
      output$plot = renderPlot({
        hist(iris$Sepal.Length)})
    })
  }
  shinyApp(ui, server)
}

这样做:

library(shiny)
if (interactive()) {
  options(device.ask.default = FALSE)
  
  ui = fluidPage(
    
    actionButton(inputId = "action", label = "BTN"),
    plotOutput(outputId = "plot"))    
  
  server = function(input, output, session){
    
    observeEvent(input$action, {
      
      output$plot = renderPlot({
        hist(iris$Sepal.Length)})
    })
  }
  shinyApp(ui, server)
}

如果您将操作按钮 class 添加到您的按钮

,它会起作用
tags$button(id = "action", "BTN", class="action-button")