将字符串添加到列表中并删除 SearchInput / textinput 的搜索栏中的文本

Add string into a list and remove the text in the search bar of a SearchInput / textinput

假设我的应用程序上有来自 shinyWidgets 的 searchInput 或来自 Shiny 的常规文本输入。

我希望用户能够写一些东西,按 enter - 代码将其添加到列表中。 这样 search_1 ENTER, search_2 ENTER , search_3 ENTER

搜索输入 UI 将在每次输入时重置。

输出需要为“search_1、search_2、search_3”

我现在有解决方法,searchInput 用“,”拆分输入文本,因此用户需要自己键入“search_1、search_2、search_3”,这是不适合使用。

希望能做到吗?提前致谢!

您可以创建一个反应值 search_text 存储所有输入:

library(shiny)
library(shinyWidgets)

ui <- fluidPage(
  searchInput("search"),
  textOutput("text")
)

server <- function(input, output, session) {
  # store all entered search terms
  search_text <- reactiveVal(value = "")
  
  observeEvent(
    eventExpr = input$search,
    handlerExpr = {
      # add current search term
      search_text() %>%
        paste0(input$search, ", ") %>%
        search_text()
      
      # reset input text
      updateSearchInput(session, "search", value = "")
    }
  )
  
  output$text <- renderText(search_text())
}

shinyApp(ui, server)