r-ShinyDasboard:重新加载会话后转到MenuSubItem



我用ShinyDashboard开发了一个应用程序。在用户输入数据的最后,我用session$reload()更新页面,因为我在同一页面上有几个表和图需要更新。但是,刷新会使我返回到应用程序的第一页,并且我希望停留在当前页面上。

我使用menuSubItem,如果我尽可能简化我的案例,这里有一个例子:

if (interactive()) {

ui <- dashboardPage(
dashboardHeader(title = "Go to sub 2 after reload"),
dashboardSidebar(
sidebarMenu(
id = "tabs",
menuItem("My menu", tabName = "idMenu",
menuSubItem("Menu sub 1", tabName = 'idMenu_sub1'),
menuSubItem("Menu sub 2", tabName = 'idMenu_sub2')
)
)
),
dashboardBody(  
tabItems(  
tabItem(tabName = "idMenu_sub1",
"I'm here after a reload"
),
tabItem(tabName = "idMenu_sub2",
actionButton(inputId = "reset", label = "Reset"),
"But I want to stay HERE")
)
)
)

server <- function(input, output, session) {
observeEvent(input$reset, {
session$reload()
})
}

shinyApp(ui, server)
}

我最终选择了一个在执行重新加载操作时更改的参数。

if (interactive()) {

# Parameter (in global for me)
param_stay_page <- FALSE

ui <- dashboardPage(
dashboardHeader(title = "Go to sub 2 after reload"),
dashboardSidebar(
sidebarMenu(
id = "tabs",
menuItem("My menu", tabName = "idMenu",
menuSubItem("Menu sub 1", tabName = 'idMenu_sub1'),
menuSubItem("Menu sub 2", tabName = 'idMenu_sub2')
)
)
),
dashboardBody(  
tabItems(  
tabItem(tabName = "idMenu_sub1",
"I'm here after a reload"
),
tabItem(tabName = "idMenu_sub2",
actionButton(inputId = "reset", label = "Reset"),
"But I want to stay HERE")
)
)
)

server <- function(input, output, session) {
observeEvent(input$reset, {
session$reload()
param_stay_page <<- TRUE
})

if(param_stay_page){
updateTabItems(session, "tabs","idMenu_sub2")
param_stay_page_newPT <<- FALSE 
}

shinyApp(ui, server)
}

最新更新