You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Shiny应用问题:点击menuSubItem后如何显示其tabName

解决Shiny Dashboard获取选中子菜单项tabName的问题

你的代码无法实现需求的原因有两个:

  1. 没有给sidebarMenu指定唯一ID,Shiny无法追踪选中的菜单项
  2. 错误使用了不存在的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 19:07:07