考虑下面的示例应用程序,演示了两种基于条件显示 UI 的方法:
library(shiny)
ui <- fluidPage(
tagList(
checkboxInput("toggle", "Toggle"),
conditionalPanel(
condition = "output.condition",
tags$p("Output from conditionalPanel")
),
uiOutput("ui")
)
)
server <- function(input, output, session) {
# conditionalPanel
output$condition <- reactive(input$toggle)
outputOptions(output, "condition", suspendWhenHidden = FALSE)
# uiOutput
output$ui <- renderUI({
req(isTRUE(input$toggle))
tags$p("Output from uiOutput")
})
}
shinyApp(ui, server)
就前端而言,conditionalPanel
and uiOutput
/req
模式的行为似乎相似。是否有任何差异,特别是与性能相关的差异,会使一种模式更有益?