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

如何在navbarPage的tabPanel中创建Shinydashboard风格菜单?

可以实现,具体方案如下

要在基础Shiny的navbarPage结构中嵌入shinydashboard风格的菜单并为每个菜单项配置不同输入控件,你需要结合shinydashboard包的组件,同时调整UI结构来实现菜单与输入区域的关联。

修正后的完整代码

library(shiny)
library(shinydashboard)

ui <- navbarPage("Shiny Tool",
                 navbarMenu("Section 1",
                            tabPanel("Section 1.1",
                                     sidebarLayout(
                                       sidebarPanel(
                                         # 定义shinydashboard风格侧边栏菜单,设置id用于监听点击事件
                                         sidebarMenu(id = "sidebar_menu",
                                                     menuItem("Dashboard", tabName = "dashboard", icon = icon("dashboard")),
                                                     menuItem("Widgets", tabName = "widgets", icon = icon("th"))
                                         ),
                                         # 根据选中菜单项动态渲染对应输入控件
                                         uiOutput("selected_inputs")
                                       ),
                                       mainPanel(
                                         # 主面板可展示对应菜单的输出内容
                                         textOutput("current_menu")
                                       )
                                     )
                            )
                 )
)

server <- function(input, output, session) {
  # 根据选中的菜单项渲染对应的输入控件集合
  output$selected_inputs <- renderUI({
    switch(input$sidebar_menu,
           "dashboard" = tagList(
             numericInput("dashboard_num", "仪表盘数值输入", value = 10),
             selectInput("dashboard_select", "仪表盘下拉选择", choices = c("选项A", "选项B"))
           ),
           "widgets" = tagList(
             textInput("widgets_text", "组件文本输入", placeholder = "输入内容"),
             checkboxInput("widgets_check", "组件复选框", value = FALSE)
           )
    )
  })
  
  # 示例:在主面板显示当前选中的菜单项
  output$current_menu <- renderText({
    paste("当前选中菜单:", input$sidebar_menu)
  })
}

shinyApp(ui, server)

关键说明

  • 必须加载shinydashboard包,sidebarMenu、menuItem等风格化组件属于该包,基础Shiny不包含这些元素。
  • 给sidebarMenu设置id(示例中为sidebar_menu),用于在服务器端监听用户的菜单选择操作。
  • 通过renderUI配合switch函数,根据用户选中的菜单项动态生成对应输入控件,实现“每个菜单项下方展示不同inputs”的需求。
  • 主面板可根据选中菜单展示对应的分析结果或内容,示例仅做基础演示。

内容的提问来源于stack exchange,提问作者MLEN

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 08:45:10