r - Shiny -点击刷新后如何记住用户输入?

标签 r shiny

我有一个 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/

相关文章:

r - 如何在 Shiny 应用程序的范围 slider 的每一侧显示不同的颜色?当你在任一侧滑动时,颜色也应该自动填充

r - 通知用户他在 Shiny 应用程序中的错误输入

r - 在用户定义函数中使用 step() 时丢失对象错误

r - ggplot 中的中位数统计差异

r - 根据 slider 输入选择要在数据表中显示的行数

h4() 中的 R Shiny 制表符\t

r heatmap - stat_密度2d (ggmap) 与 addHeatmap ( Shiny 的传单)

r - 如何将shapefile上传到Shiny App

regex - R - 使用正则表达式的子文本

r - 在 getURL 中设置 "an informative User-Agent string"