shinydashboard: странный рендеринг при использовании uiOutput () для тела - PullRequest
0 голосов
/ 24 августа 2018

Я хочу, чтобы мое тело dahsboard менялось в зависимости от выбора, сделанного на боковой панели. Тем не менее у меня есть проблема с результирующим рендерингом тела, как показано ниже:

неправильный рендеринг

Поле имеет ширину = 12 и, следовательно, должно охватывать всю строку следующим образом:

правильный рендеринг

Вот код, который я использую:

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 и глянцевый_1.1.0.

Большое спасибо за помощь!

1 Ответ

0 голосов
/ 25 августа 2018

Попробуйте установить аргумент body для dashboardPage() следующим образом:

ui <- dashboardPage(
  header = dashboardHeader(),
  sidebar = sidebar,
  body = dashboardBody(uiOutput("body"))
)

Кроме того, удалите оболочку dashboardBody() из переменных body1 и body2:

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

Это решит проблему с динамическим телом и может решить вашу проблему с рендерингом.

...