如何解决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)
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。