我有一个
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)
´´´
也许这就是您正在寻找的。使用 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)