Как обновить вектор символов из блестящего textInput? - PullRequest
2 голосов
/ 06 марта 2019

Я хочу добавить входной текст в вектор в приложении Shiny при каждом нажатии кнопки.Вот пример, с которым я работаю:

library(shiny)
ui <- fluidPage(
     textInput(inputId = "inquiry", label = "enter text"),
     actionButton(inputId = "searchButton", label = "Run"),
     verbatimTextOutput("queryList", placeholder = FALSE)
)
server <- function(input, output, session) {
     queryList <- c()
     observeEvent(input$searchButton, {
          queryList[length(queryList)+1] <- input$inquiry
          output$queryList <- renderPrint({
               queryList
          })
     })
}
shinyApp(ui = ui, server = server)

Итак, если введено "item1" и нажата кнопка, то будет введено "item2" и снова нажата кнопка, должен выглядеть queryListкак c("item1", "item2"), но, похоже, он просто заменяет "item1" на "item2".Я уверен, что мне не хватает чего-то очень простого ... queryList[length(queryList)+1] выглядит немного странно, но это работает в нереактивной среде.

1 Ответ

3 голосов
/ 06 марта 2019

Исправление запросов в списке запросов исправлено для меня:

library(shiny)

ui <- fluidPage(
  textInput(inputId = "inquiry", label = "enter text"),
  actionButton(inputId = "searchButton", label = "Run"),
  verbatimTextOutput("queryList", placeholder = FALSE)
)

server <- function(input, output, session) {
  queryList <- reactiveValues()
  queryList$values <- c()

  observeEvent(input$searchButton, {
    queryList$values[length(queryList$values) + 1] <- input$inquiry
  })

  output$queryList <- renderPrint({
    if (!is.null(queryList$values)) {
      queryList$values
    }
  })
}

shinyApp(ui = ui, server = server)
...