如何在 r shiny 中为 updatedInputs 添加书签

How to bookmark updatedInputs in r shiny

我有一个包含很多 updateNumericInputs 的应用程序,我希望能够为它们的状态添加书签。我把 reprex 做得非常小,但我仍然可以指出这个问题。我正在阅读有关书签的内容 - 我真的很困惑,我怀疑我需要更多代码行,尽管从我所附的图片看来我可能只差一个逗号。我一直在试验,尝试采用教程、文章、SO 答案中的代码,但我无法让它发挥作用。我将非常感谢解决方案和有关它的讲座。 非常感谢您的宝贵时间!

library(shiny)


ui <- fluidPage(

          numericInput("Min", "Min",min = 0, max = 100, value = 42.5, step = 0.1),
          numericInput("Max", "Max", min = 0.0, max = 100, value = 47.4, step = 0.1),
          bookmarkButton(id = "bookmark")
    )



server <- function(input, output, session) {


  observeEvent(input$Max,{
    req(input$Max, input$Min)

    updateNumericInput(session,
                       "Min",
                       "Min",
                       value = input$Max - 0.1, min = 0.0, max = 100, step = 0.1)

  })




  observeEvent(input$bookmark,{
    reactiveValuesToList(input)
    session$doBookmark()
  })

}

enableBookmarking("url")

shinyApp(ui = ui, server = server)

找到了!

ui 作为具有一个参数的函数很重要 request ui <- function(request) { fluidPage(....) } 并且在具有 onRestore() 的服务器中,向量包含输入的当前状态,然后作为值提供给 update..Input()

library(shiny)


ui <-  function(request){
  fluidPage(

    numericInput("Min", "Min",min = 0, max = 100, value = 42.5, step = 0.1),
    numericInput("Max", "Max", min = 0.0, max = 100, value = 47.4, step = 0.1),
    bookmarkButton()
  )

}

server <- function(input, output, session) {


  observeEvent(input$Max,{
    req(input$Max, input$Min)
    updateNumericInput(session,
                       "Min",
                       "Min",
                       value = input$Max - 0.1, min = 0.0, max = 100, step = 0.1)

  })


    onRestored(function(state) {

      Min <- state$input$Min
      Max  <- state$input$Max
      updateNumericInput(session, "Min", value = Min,  min = 0.0, max = 100, step = 0.1)
      updateNumericInput(session, "Max", value = Max,  min = 0.0, max = 100, step = 0.1)
    })


}


shinyApp(ui = ui, server = server, enableBookmarking = "url")