0

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()はこの問題はありませんが、確かなことはわかりません。

では、パネルが展開されたときだけでなく、アプリの起動時にこのテーブルの初期化を強制する方法はありますか?

パネルを開いて開始するように設定し、サーバーをハックして起動時にパネルを閉じることを考えましたが、それがどのように機能するか、または機能するかどうかは完全にはわかりません(事前に閉じる場合)最初の再描画まで、それはどのような違いを生むでしょうか? 最初の再描画の後である場合、それは起動時にちらつきを意味しますよね?)。

4

1 に答える 1