找不到闪亮的反应对象

Eri*_*een 1 r shiny

我认为我的Shiny应用程序中缺少与反应性有关的某些内容。这是MRE,显示我的打印问题y

library(shiny)

ui <- fluidPage(
   titlePanel("Test"),
   textAreaInput("text", "Text", "", width = "400px"),
   verbatimTextOutput("text"),
   actionButton("do", "Run"),
   textOutput("result")
   )

server <- function(input, output) {
  observeEvent(input$do, {
  y <- reactive({
    x <- ""
    t <- 1
    while (t < 5) {
      x <- paste(input$text, x, sep=",")
      t <- t + 1
    }
  })
  })
  output$result <- renderPrint({y})
}

shinyApp(ui = ui, server = server)
Run Code Online (Sandbox Code Playgroud)

tbr*_*ley 5

您不应该在observeEventor observe调用中放入反应性值。实际上,Joe Cheng曾建议不要将任何一个observereactive函数嵌套在自己或另一个中。它们是用于不同目的的独立事物。由于您希望y基于input$do单击的时间来创建反应式,因此应使用eventReactive

server <- function(input, output) {
  y <- eventReactive(input$do, {
    x <- ""
    t <- 1
    while (t < 5) {
      x <- paste(input$text, x, sep=",")
      t <- t + 1
    }
    return(x)
  })

  output$result <- renderText({y()})
}
Run Code Online (Sandbox Code Playgroud)

我更改renderPrint()renderText(),以显示所需的输出。另外,由于y是响应式的,因此需要y()renderText()调用中添加它。我还添加return(x)eventReactive呼叫,否则t将返回值。