Shiny应用问题:点击menuSubItem后如何显示其tabName
解决Shiny Dashboard获取选中子菜单项tabName的问题
你的代码无法实现需求的原因有两个:
- 没有给
sidebarMenu指定唯一ID,Shiny无法追踪选中的菜单项 - 错误使用了不存在的
input$tabs来获取选中值
只需做两处修改即可解决问题:
修改后的完整代码
library(shiny) library(shinydashboard) # Define UI for app ui <- dashboardPage( dashboardHeader(title = "Example App"), dashboardSidebar( sidebarMenu( id = "selected_tab", # 新增:给sidebarMenu设置ID menuItem("Tab 1", tabName = "tab1", menuSubItem("SubTab 1", tabName= "sub1"), menuSubItem("SubTab 2", tabName= "sub2")) ) ), dashboardBody( h3("Selected Menu:"), verbatimTextOutput("selected_menu") ) ) # Define server logic server <- function(input, output, session) { # render the selected menu item as text output$selected_menu <- renderText({ # 修改:使用sidebarMenu的ID对应的input值 paste("Selected Menu Item:", input$selected_tab) }) } # Run the application shinyApp(ui = ui, server = server)
关键说明
- 给
sidebarMenu设置id参数后,Shiny会自动创建一个同名的input对象,用于存储当前选中菜单项的tabName - 不管点击的是父菜单项(
tab1)还是子菜单项(sub1/sub2),input$selected_tab都会返回对应的tabName值
内容的提问来源于stack exchange,提问作者Hassan Camil David
相关产品推荐
相关产品推荐

