闪亮:隐藏时渲染输出

时间:2018-11-07 12:24:14

标签: r shiny shinyjs

我正在尝试在运行应用程序时在shinyjs::hidden节中包含的闪亮应用程序中渲染一些输出,而不是在该节可见之后。

编辑:我在原始示例中设置的应用程序不正确,因此已将其更改。

我希望能够在运行最终观察以将UI从Alpha文本更改为Beta文本并绘图之前运行反应性语句。理想情况下,这意味着控制台中的"Done plotting"之前会看到"Observe run"

library(shiny)
library(shinyjs)

ui <- fluidPage(
  useShinyjs(),
  div(id = "before-content", h3("Aux Text Alpha")),
  shinyjs::hidden(
    div(
      id = "after-content", 
      h1("Aux Text Beta"), 
      plotOutput("text")
    )
  )
)

server <- function( session,input, output) {

  in_plot <- reactive({
    Sys.sleep(3)
    print("Done plotting")
    plot(iris)
  })

  output$text <- renderPlot({
    in_plot()
  })

  observe({
    print("Observe run")
    hide("before-content")
    show("after-content")
  })
}

shinyApp(ui, server)

一种替代方法是在被分类为隐藏部分的内容上放一层,但是对于如何完成此操作不太确定。

1 个答案:

答案 0 :(得分:0)

您可以hide在反应式中,如下所示:

library(shiny)
library(shinyjs)

ui <- fluidPage(
  useShinyjs(),
  actionButton("button", "Click me"),
  plotOutput("text")
)

server <- function( session,input, output) {

  in_plot <- reactive({
    hide("text")
    Sys.sleep(3)
    print("Done plotting")
    plot(iris)
  })

  output$text <- renderPlot({
    in_plot()
  })

  observeEvent(input$button, {
    show("text")
  })
}

shinyApp(ui, server)