我有以下应用程序,它只是一个包含rhandsontable
表格的折叠面板。
library(shiny)
library(shinyBS)
library(rhandsontable)
ui <- function() {
fluidPage(
bsCollapsePanel(
"Test",
rHandsontableOutput("table")
)
)
}
server <- function(input, output, session) {
output$table <- renderRHandsontable({
rhandsontable(
data.frame(
a = 1:2,
b = 2:3
)
)
})
}
shinyApp(ui, server)
它按预期工作:面板以隐藏其内容开始,如果我们单击它,面板将打开并看到表格。
但是,面板打开和出现的表格之间存在明显的“滞后”。我认为这是因为该表直到那时才被初始化,因此实际创建表的所有工作都只发生在那个时刻。
如果我们然后关闭面板并重新打开它,就没有这种滞后,我们甚至可以随着面板重新打开逐渐看到表格。
我不知道这是一个功能还是一个错误,或者是谁的“错”是:rhandsontable
因为懒惰启动?shinyBS
,因为懒得启动它的内容?shiny
一般来说,仅在需要时立即触发重绘?我认为它是rhandsontable
,因为更基本的元素如textInput()
没有这个问题,但不能确定。
那么,有没有办法在应用程序启动时强制初始化表格,而不是仅在面板展开时?
我曾想过将面板设置为开始打开,然后破解服务器以在启动时关闭面板,但我不完全确定它是如何工作的......或者它是否可以工作(如果它之前关闭第一次重绘,会有什么不同?如果是在第一次重绘之后,那意味着启动时会闪烁,对吗?)。