我有这个应用程序,书签shiny 效果很好,除了它只能在页面刷新后恢复最后一个手风琴面板.如果我重新生成相同的面板,则可以看到文本输入已恢复.但它需要用户重新生成电池板.可以用书签恢复手风琴面板吗?
示例应用程序
library(shiny)
library(bslib)
ui <- function(request) {
fluidPage(
theme = bs_theme(version = 5),
titlePanel("Dynamic Tabs with Bookmarking"),
sidebarLayout(
sidebarPanel(
textInput("tab_name", "Tab Name"),
actionButton("add_tab", "Add Tab")
),
mainPanel(
accordion(
id = "tabs"
)
)
)
)
}
server <- function(input, output, session) {
# Reactive value to store tab names
tabs <- reactiveVal(character(0))
# Function to add a new tab
observeEvent(input$add_tab, {
new_tab_name <- isolate(input$tab_name)
if (!is.null(new_tab_name) && new_tab_name != "") {
accordion_panel_insert(id = "tabs",
panel = accordion_panel(title = new_tab_name, value = new_tab_name,
textInput(paste0(new_tab_name, "_my"), label="Enter:"))
)
# Update reactive value with new tab name
tabs(c(tabs(), new_tab_name))
}
})
# Update bookmark state
observe({
session$doBookmark()
})
# Update URL
onBookmarked(updateQueryString)
}
shinyApp(ui, server, enableBookmarking = "url")