Shinydashboard:对主体使用uiOutput()时的奇怪渲染

时间:2018-08-24 08:41:40

标签: r shiny rendering data-science shinydashboard

我希望我的dahsboardbody可以根据侧边栏中的选择进行更改。但是,如下图所示,我对主体的渲染存在问题:

wrong rendering

此框的宽度= 12,因此应像这样覆盖整个行:

correct rendering

这是我正在使用的代码:

body1 <- dashboardBody(
     box(title = "test1", width = 12)
)

body2 <- dashboardBody(
  box(title = "test2", width = 12)
)

sidebar <- dashboardSidebar(
  sidebarMenu(
    menuItem("Choose", tabName = "test",
             radioButtons("choice", label = NULL, choices = c("body1", "body2"))
    )
  )
)

body <- dashboardBody(uiOutput("body"))

ui <- dashboardPage(
  header = dashboardHeader(),
  sidebar = sidebar,
  body = body1
)

server <- function(input, output, session) {
  
  output$body <- renderUI({
    if(input$choice == "body1") {
      body1
    }
    else {
      body2
    }
  })
}

shinyApp(ui, server)

调整窗口大小或在浏览器中打开窗口无济于事。我想念什么?

我正在将R版本3.5.0(2018-04-23)与Shinydashboard_0.7.0和Shiny_1.1.0一起使用。

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

尝试将body的{​​{1}}参数设置如下:

dashboardPage()

另外从ui <- dashboardPage( header = dashboardHeader(), sidebar = sidebar, body = dashboardBody(uiOutput("body")) ) dashboardBody()变量中删除body1包装器:

body2

它将解决动态主体问题,也可能解决您的渲染问题。