问题描述
我有以下应用,它只是一个包含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()
这样的基本元素没有这个问题,但是不能确定。
那么,有没有一种方法可以在应用程序启动时(而不是仅在面板展开时)强制对此表进行初始化?
我曾经考虑过将面板设置为开始打开,然后在启动时破解服务器以关闭面板,但是我不完全确定那是如何工作的……或者甚至可以工作(如果它在第一次重画之前就关闭了,这有什么区别呢?如果是在第一次重画之后,那意味着启动时会闪烁,对吧?)。
解决方法
我认为应该这样做:
ini_set('session.use_cookies','On');
ini_set('session.use_trans_sid','Off');
session_set_cookie_params(60 * 60 * 24 * 30,'/');
session_start();