如果您将该值中继到可以轻松完成的无功值上。现在您可以初始化
ValueRange
的外部
renderUI
你用这种方式规避了这个问题。
我更改了
renderUI
一点。使用
if
这样做需要维护两次dame代码。除非你打算在这两个方框中添加更多的差异,否则它在未来会更容易(更容易阅读)。现在条件只会改变框id。但是,当然,如果它对你的想法没有意义,你可以忽略它。
请注意,滑块的每次更新都会折叠框,因为
collapsed = T
.
## app.R ##
library(shiny)
library(shinydashboard)
library(shinydashboardPlus)
ui <- dashboardPage(
dashboardHeader(),
dashboardSidebar(),
dashboardBody(
tags$head(
tags$style(HTML("
#mybox2Red{border-top-style: none; border-left-color: red; border-left-style: solid;}
#mybox2Green{border-top-style: none; border-left-color: green; border-left-style: solid;}
"))
),
uiOutput("box2")
)
)
server <- function(input, output) {
ValueRange <- reactiveVal(5)
observeEvent(input$vr, ValueRange(input$vr))
output$box2 <- renderUI({
req(ValueRange)
box(
id=ifelse(input$vr<=5, "mybox2Red", "mybox2Green"),
title = "title",
closable = TRUE,
width = 10,
status = "danger",
solidHeader = F,
collapsible = TRUE,
collapsed = T,
sliderInput("vr","Set value range", min = 0, max=10, value = ValueRange())
)
})
}
shinyApp(ui, server)