我有一个 Shiny 应用程序,它要求用户输入。 刷新页面后如何保持用户输入? 例如 - 如果用户写“你好”我会看到他的输入。 即使他点击刷新,我仍然希望看到他最后的输入
## Only run examples in interactive R sessions
if (interactive()) {
ui <- fluidPage(
textInput("caption", "Caption", "Data Summary"),
verbatimTextOutput("value")
)
server <- function(input, output) {
output$value <- renderText({ input$caption })
}
shinyApp(ui, server)
}
最佳答案
native Shiny 的方法是“实时”书签 - 请参阅 ?updateQueryString
library(shiny)
ui = function(req) {
fluidPage(
textInput("caption", "Caption", "Data Summary"),
verbatimTextOutput("value")
)
}
server = function(input, output, session) {
observe({
# Trigger this observer every time an input changes
reactiveValuesToList(input)
session$doBookmark()
})
onBookmarked(function(url) {
updateQueryString(url)
})
output$value <- renderText({ input$caption })
}
shinyApp(ui, server, enableBookmarking = "url")
另一种方法是使用 shiny 的 onSessionEnded
回调来保存输入的当前状态,例如通过 save()
和 load()
它们在 session 开始时 - 或使用库( shinyStore )将输入保存在客户端浏览器的 local storage 中:
# install.packages("devtools")
# library(devtools)
# install_github("trestletech/shinyStore")
library(shiny)
library(shinyStore)
ui <- fluidPage(
initStore("store", "myUniqueNamespace"),
textInput("caption", "Caption", "Data Summary"),
verbatimTextOutput("value")
)
server <- function(input, output, session) {
observeEvent(input$store$caption, {
freezeReactiveValue(input, "caption")
updateTextInput(session, "caption", value = input$store$caption)
})
observe({
updateStore(session, "caption", input$caption)
})
output$value <- renderText({ input$caption })
}
shinyApp(ui, server)
关于r - Shiny -点击刷新后如何记住用户输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72715897/