我确实有一个非常简单和好的解决方案,但它不适用于文件输入.
这是一个适用于除文件输入之外的所有输入的解决方案:
更新2017:此解决方案在前两年的文件输入上无效,但现在确实如此.
library(shiny)
library(shinyjs)
runApp(shinyApp(
ui = fluidPage(
shinyjs::useShinyjs(),
div(
id = "form",
textInput("text", "Text", ""),
selectInput("select", "Select", 1:5),
actionButton("refresh", "Refresh")
)
),
server = function(input, output, session) {
observeEvent(input$refresh, {
shinyjs::reset("form")
})
}
))
Run Code Online (Sandbox Code Playgroud)
按"刷新"时,所有输入都将重置为初始值.
但文件输入非常奇怪,很难"重置"它们.看到这里.如果你愿意的话,你可以一起破解一些JavaScript来尝试重置输入字段.以下是执行实际页面刷新的方法:
library(shiny)
library(shinyjs)
runApp(shinyApp(
ui = fluidPage(
shinyjs::useShinyjs(),
shinyjs::extendShinyjs(text = "shinyjs.refresh = function() { location.reload(); }"),
textInput("text", "Text", ""),
actionButton("refresh", "Refresh")
),
server = function(input, output, session) {
observeEvent(input$refresh, {
shinyjs::js$refresh()
})
}
))
Run Code Online (Sandbox Code Playgroud)
免责声明:这两种解决方案都使用我写的包, shinyjs