renderUI不适用于fillPage

时间:2018-05-17 12:18:25

标签: r shiny uioutput

我有以下简单易用的应用程序:

if (interactive()) {
    ui <- fillPage(
        fillRow(
            fillCol(".", style = "background-color: red;", height = "10%"),
            fillCol(".", style = "background-color: blue;", height = "10%")
        )
    )
    server <- function(input, output, session) {}
    shinyApp(ui, server)
}

结果正是我想要的,但如果我尝试用renderUI实现同样的效果,我会得到一个空页。

我尝试使用以下代码制作:

if (interactive()) {
    ui <- fillPage(
        uiOutput("back")
    )
    server <- function(input, output, session) {
        output$back <- renderUI({
            fillRow(
                fillCol(".", style = "background-color: red;", height = "10%"),
                fillCol(".", style = "background-color: blue;", height = "10%")
            )
        })
    }
    shinyApp(ui, server)
}

1 个答案:

答案 0 :(得分:0)

使用height:100%时这是一个典型问题。使用uiOutput会在renderUI附近为你添加一个div,不幸的是这个div默认高度为0。此修复程序的修正设置高度为100%

if (interactive()) {
  ui <- fillPage(
    uiOutput("back",style = "height:100%;")
  )
  server <- function(input, output, session) {
    output$back <- renderUI({
      fillRow(
        fillCol(".", style = "background-color: red;", height = "10%"),
        fillCol(".", style = "background-color: blue;", height = "10%")
      )
    })
  }
  shinyApp(ui, server)
}

希望这有帮助!