我shinycssloaders
用来显示加载动画。页面上有多个从服务器加载的输入。这些输入也相互依赖。
在下面的示例中,我使用了一个响应式对象来创建这种依赖关系。首先显示表格,只有当表格计算完成时(rv$a <- 1
)绘图才能完成。
library(shiny)
library(shinycssloaders)
ui <- fluidPage(
withSpinner(tableOutput('data')),
withSpinner(plotOutput('plot'))
)
server <- function(input, output) {
rv <- reactiveValues(a = NULL)
output$data <- renderTable({
#Some long calculation here, using Sys.sleep for simplicity
Sys.sleep(2)
rv$a <- 1
head(mtcars)
})
output$plot <- renderPlot({
req(rv$a)
#Some long calculation here, using Sys.sleep for simplicity
Sys.sleep(2)
plot(rnorm(100), rnorm(100))
})
}
shinyApp(ui, server)
这工作正常,但它显示了 2 个加载器,一个用于表格,另一个用于绘图。我想组合这 2 个加载器并仅显示 1 个加载动画,它覆盖整个页面组合表和绘图。此外,只有在所有计算完成后才应结束加载,即在绘图计算之后。
我曾尝试将表格和绘图放入 adiv
并在 div 上使用微调器,但它不起作用并给出了一个空白页。
ui <- fluidPage(
withSpinner(div(
tableOutput('data'),
plotOutput('plot')
))
)
有人对此有解决方案吗?这可能使用一些不同的包吗?