首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >shinydashboard :在使用uiOutput时获取特定的默认页面

shinydashboard :在使用uiOutput时获取特定的默认页面
EN

Stack Overflow用户
提问于 2021-05-03 16:22:45
回答 1查看 28关注 0票数 0

我正在制作响应式的闪亮网页,并沉迷于下面的代码。

代码语言:javascript
运行
复制
library(shiny)
library(shinydashboard)

ui = dashboardPage(
  dashboardHeader(title = "header"),
  dashboardSidebar(
    sidebarMenuOutput("sideBar")),
  dashboardBody(
    uiOutput("test")
  )
)

server = shinyServer(function(input, output, session) { 
  output$sideBar <- renderMenu({
    sidebarMenu(id = "menu",
                menuItem("Dashboard", tabName ="dashboard", icon = icon('dashboard')),
                menuItem("DBcentor", tabName ="dbcenter", icon = icon('database'))
    )
  }) 
  output$test <- renderUI ({
    tabItems(
      tabItem(tabName = "dashboard", uiOutput("dashboardbody")),
      tabItem(tabName = "dbcenter", uiOutput("dbcenterbody"))
    )
  })
  output$dashboardbody <- renderUI ({
    box("Dashboard Body")
  })
  output$dbcenterbody <- renderUI ({
    box("Dbcenter Body")
  })
  
})

shinyApp(ui, server)

我使用uiOutput来构建body,但在加载了闪亮的应用程序后,仪表板页面上什么也没有。

我像这样修改了代码,

代码语言:javascript
运行
复制
library(shiny)
library(shinydashboard)

ui = dashboardPage(
  dashboardHeader(title = "header"),
  dashboardSidebar(
    sidebarMenuOutput("sideBar")),
  dashboardBody(
    tabItems(
      tabItem(tabName = "dashboard", uiOutput("dashboardbody")),
      tabItem(tabName = "dbcenter", uiOutput("dbcenterbody"))
    )
  )
)

server = shinyServer(function(input, output, session) { 
  output$sideBar <- renderMenu({
    sidebarMenu(id = "menu",
                menuItem("Dashboard", tabName ="dashboard", icon = icon('dashboard')),
                menuItem("DBcentor", tabName ="dbcenter", icon = icon('database'))
    )
  }) 
  output$dashboardbody <- renderUI ({
    box("Dashboard Body")
  })
  output$dbcenterbody <- renderUI ({
    box("Dbcenter Body")
  })
  
})

shinyApp(ui, server)

当然,它是有效的,box("dashboadbody")会出现在第一页。

我想使用uiOutput,因为我应该使用input data来构建菜单和项目。有没有办法同时在默认页面上使用uiOutput和获取box("dashboard")

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-03 21:36:53

尝尝这个

代码语言:javascript
运行
复制
ui = dashboardPage(
  dashboardHeader(title = "header"),
  dashboardSidebar(
    sidebarMenuOutput("sideBar")),
  dashboardBody(
    uiOutput("test")
  )
)

server = shinyServer(function(input, output, session) { 
  output$sideBar <- renderMenu({
    sidebarMenu(id = "menu",
                menuItem("Dashboard", tabName ="dashboard", icon = icon('dashboard')),
                menuItem("DBcentor", tabName ="dbcenter", icon = icon('database'))
    )
  }) 
  
  output$dashboardbody <- renderUI ({
    box("Dashboard Body")
  })
  output$dbcenterbody <- renderUI ({
    box("Dbcenter Body")
  })
  updateTabItems(session,"menu","dbcenter")
  updateTabItems(session,"menu","dashboard")
  
  output$test <- renderUI ({
    tagList(
      tabItems(
        tabItem(tabName = "dashboard", uiOutput("dashboardbody")),
        tabItem(tabName = "dbcenter", uiOutput("dbcenterbody"))
      ))
  })
})

shinyApp(ui, server)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67365678

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档