1

如果我在 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 无法正确加载。

这是一个错误吗?

我怎样才能克服这个问题?

4

0 回答 0