You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 17:18:43