闪亮的submitButton无法正常工作

刚开始学习Shiny.我尝试构建一个简单的非反应式应用程序,用户单击按钮,随机向量将打印到屏幕上.但是,我无法让提交按钮工作.

# Load required files
lapply(c("data.table", "shiny"), require, character.only=T)

#=================================================================
# Define UI for application that draws a histogram

ui <- shinyUI(fluidPage(

   # Application title
   titlePanel("App-4"),

   # Sidebar
   sidebarLayout(
      sidebarPanel(
        submitButton("Submit")
      ),

      # Print the data
      mainPanel(
        textOutput("myTable")
      )
   )
))

#=================================================================
# Define server logic

server <- shinyServer(function(input, output) {
   output$myTable <- renderPrint({
     sample(10)
   })
})

#=================================================================

# Run the application 
shinyApp(ui = ui, server = server)

我究竟做错了什么?我能够使用actionButton来实现这一点,但我想了解为什么上面的代码不起作用.谢谢.

最佳答案 这是一个非常简单的演示.单击该按钮时,它将生成一个包含100个随机数的新直方图.

submitButton旨在与输入表单一起使用,并不适用于您的要求.例如,如果您有四个不同的输入,并且您希望仅在单击提交按钮时更改输出,而不是在单个输入更改时.

在Shiny中,输出变化是由事件链引起的.您的输出需要依赖于一个或多个输入才能更改.现在,您的输出(服务器代码)不依赖于任何输入,因此不会发生任何事情.请阅读此处以获得非常详细的解释. http://shiny.rstudio.com/articles/reactivity-overview.html

library(shiny)

# Define UI for application that draws a histogram
ui <- shinyUI(fluidPage(

   # Application title
   titlePanel("Button demo"),

   # Sidebar with a button
   sidebarLayout(
      sidebarPanel(
        actionButton("button", "Click me to get a new histogram")
      ),

      # Show a plot of the generated distribution
      mainPanel(
         plotOutput("distPlot")
      )
   )
))

# Define server logic required to draw a histogram
server <- shinyServer(function(input, output) {

  observeEvent(input$button, {
    output$distPlot <- renderPlot({
      hist(rnorm(100))
    })
  })
})

# Run the application 
shinyApp(ui = ui, server = server)
点赞