R Shiny写入SQLite后点击按钮如何清空输入框内容
问题原因
你的输入框清空逻辑不生效,是两处代码写法错误导致的:
updateTextInput语句写在了return(data)之后。R函数执行到return语句就会直接终止运行、返回结果,return之后的代码永远不会被执行- 清空文本输入框需要传入空字符串
""作为值参数,传入NA不符合组件的参数规则,无法触发输入框内容更新
修正后代码
把更新输入框的逻辑移到return语句之前,同时给两个输入框都加上清空逻辑即可,完整可运行代码如下:
library(shiny) library(RSQLite) ui = bootstrapPage( textInput("value1", label = "Value 1"), textInput("value2", label = "Value 2"), actionButton("action", label = "Write to DB"), hr(), tableOutput("table") ) server = function(input, output, session){ session$onSessionEnded(function() { stopApp() }) data <- eventReactive(input$action, { con <- dbConnect(SQLite(), dbname="sample.sqlite") dbWriteTable(con, "test", data.frame(value1 = input$value1, value2 = input$value2, stringsAsFactors = FALSE), append = TRUE) data <- dbReadTable(con, "test") dbDisconnect(con) # 写入完成后清空两个输入框 updateTextInput(session, "value1", value = "") updateTextInput(session, "value2", value = "") return(data) }) output$table <- renderTable(data()) } shinyApp(ui = ui, server = server)
注意:调用
updateTextInput时如果不需要修改输入框的原有标签,不需要重复传入label参数,直接指定value = ""即可保留原标签,仅清空输入内容。
内容的提问来源于stack exchange,提问作者Salvador
相关产品推荐
相关产品推荐

