强制绘制隐藏 table
Force draw of hidden table
我有以下应用程序,它只是一个包含 rhandsontable
table.
的折叠面板
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)
它按预期工作:面板开始时隐藏其内容,如果我们单击它,面板会打开,我们会看到 table。
但是,在面板打开和 table 出现之间存在明显的“滞后”。我认为这是因为 table 直到那时才被初始化,所以所有实际创建 table 的工作只发生在那个时刻。
如果我们然后关闭面板并重新打开它,就没有这种延迟,我们甚至可以在面板重新打开时逐渐看到 table。
不知道是特性还是bug,又是谁的“错”:rhandsontable
,懒得开机? shinyBS
,懒得启动它的内容? shiny
一般情况下,仅在需要时立即触发重绘?我假设它是 rhandsontable
,因为像 textInput()
这样的更基本的元素没有这个问题,但不能确定。
那么,有没有办法在应用启动时强制 table 初始化,而不是仅在面板展开时才进行初始化?
我想过将面板设置为打开,然后破解服务器以在启动时关闭面板,但我不完全确定它是如何工作的......或者它是否可以工作(如果它在第一次重绘之前关闭,会有什么不同?如果它在第一次重绘之后关闭,这意味着启动时会出现闪烁,对吧?)。
我认为应该这样做:
server <- function(input, output, session) {
output$table <- renderRHandsontable({
rhandsontable(
data.frame(
a = 1:2,
b = 2:3
)
)
})
outputOptions(output, "table", suspendWhenHidden = FALSE)
}
我有以下应用程序,它只是一个包含 rhandsontable
table.
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)
它按预期工作:面板开始时隐藏其内容,如果我们单击它,面板会打开,我们会看到 table。
但是,在面板打开和 table 出现之间存在明显的“滞后”。我认为这是因为 table 直到那时才被初始化,所以所有实际创建 table 的工作只发生在那个时刻。
如果我们然后关闭面板并重新打开它,就没有这种延迟,我们甚至可以在面板重新打开时逐渐看到 table。
不知道是特性还是bug,又是谁的“错”:rhandsontable
,懒得开机? shinyBS
,懒得启动它的内容? shiny
一般情况下,仅在需要时立即触发重绘?我假设它是 rhandsontable
,因为像 textInput()
这样的更基本的元素没有这个问题,但不能确定。
那么,有没有办法在应用启动时强制 table 初始化,而不是仅在面板展开时才进行初始化?
我想过将面板设置为打开,然后破解服务器以在启动时关闭面板,但我不完全确定它是如何工作的......或者它是否可以工作(如果它在第一次重绘之前关闭,会有什么不同?如果它在第一次重绘之后关闭,这意味着启动时会出现闪烁,对吧?)。
我认为应该这样做:
server <- function(input, output, session) {
output$table <- renderRHandsontable({
rhandsontable(
data.frame(
a = 1:2,
b = 2:3
)
)
})
outputOptions(output, "table", suspendWhenHidden = FALSE)
}