ShinyDasboard:重新加载会话后转到 MenuSubItem
ShinyDasboard : Go to a MenuSubItem after reload session
我用 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)
}
我用 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)
}