如何从闪亮的 textInput 更新字符向量?
How to update a character vector from shiny textInput?
我想在每次单击按钮时将输入文本添加到 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]
看起来有点奇怪,但它在非反应性环境中工作。
使 queryList 响应式为我修复了它:
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)
我想在每次单击按钮时将输入文本添加到 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]
看起来有点奇怪,但它在非反应性环境中工作。
使 queryList 响应式为我修复了它:
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)