单击时选择并展开可反应的行

问题描述 投票:0回答:1

我有一个

reactable
,具有可扩展的详细信息和单行选择。
reactable
包提供
onClick
参数,可以设置为“选择”或“扩展”。问题是我想要同时使用两个选项,即要选择的行以及单击时展开的行。
onClick
参数的第三个选项是
JS()
函数,需要行信息对象、列对象和表状态对象。如果我的 Javascript 知识不是那么贫乏的话,这可能是解决方案的途径。有人可以帮忙吗?

考虑以下代码:

library(shiny)
library(reactable)

ui <- fluidPage(
  reactableOutput("table")
)

server <- function(input, output) {
  output$table <- renderReactable({
    reactable(iris[1:5, ],
      details = function(index) {
        htmltools::div(
          "Details for row: ", index,
          htmltools::tags$pre(paste(capture.output(iris[index, ]), collapse = "\n"))
        )
      },
      selection = "single",
      onClick = JS("function(rowInfo) {
        // js code to select + expand row goes here
      }")
    )
  })
  
}

shinyApp(ui, server)

´´´
javascript r shiny reactable
1个回答
0
投票

也许这就是您正在寻找的。使用 JS API,您可以通过调用

toggleRowExpanded()
toggleRowSelected()
方法来展开和选择行:

library(shiny)
library(reactable)

ui <- fluidPage(
  reactableOutput("table")
)

server <- function(input, output) {
  output$table <- renderReactable({
    reactable(iris[1:5, ],
      details = function(index) {
        htmltools::div(
          "Details for row: ", index,
          htmltools::tags$pre(paste(capture.output(iris[index, ]), collapse = "\n"))
        )
      },
      selection = "single",
      onClick = JS("function(rowInfo) {
                  rowInfo.toggleRowExpanded();
                  rowInfo.toggleRowSelected();
      }")
    )
  })
}

shinyApp(ui, server)
© www.soinside.com 2019 - 2024. All rights reserved.