如果我在 Shiny 很忙时在 navbarpage 中来回更改选项卡,那么这将导致加载数据表时出现问题。
请参阅下面的示例并执行此操作
1) 启动应用程序
2) 应用程序启动时立即转到 Y-tab
3) 返回 X-tab
4) 等待程序在 X-tab 上完成
5) 返回 Y-标签。这里没有什么!!
library(shiny)
library(DT)
server = shinyServer(function(input,output) {
Sys.sleep(5)
output$X = DT::renderDataTable({
DT::datatable(data.frame(x=runif(100),y=runif(100)))
})
output$Y = DT::renderDataTable({
DT::datatable(data.frame(x=runif(100),y=runif(100)))
})
})
ui = shinyUI(navbarPage('',
tabPanel('data X',fluidPage(DT::dataTableOutput('X'))),
tabPanel('data Y',fluidPage(DT::dataTableOutput('Y')))
))
shinyApp(ui=ui,server=server)
我认为发生的事情是,当我访问 Y-tab 时,会以某种方式返回一些空数据表,因为真正的数据表尚未准备好。然后这个空的永远不会被真实的替换,因为 Shiny 认为我已经得到了我的数据。
如果我立即转到 Y-tab 并等待应用程序在那里完成,也会出现此问题。在这种情况下,X-tab 无法正确加载。
这是一个错误吗?
我怎样才能克服这个问题?