当选定的行用作反应值时,闪亮的 DT 外观会变得混乱

问题描述 投票:0回答:1
当使用其输入来自第一个表中所选行的反应值时,通过 DT 包的 DataTables 界面显示的表格显得混乱(例如无序的元素、奇怪的分页......)。使用R版本

3.4.3

,以及shiny
1.1.0
和DT
0.4
,两者均来自CRAN。

最少的代码:

library(shiny) library(DT) ui <- fluidPage( DT::dataTableOutput("dt"), actionButton("go", "Go"), wellPanel(DT::dataTableOutput("selected")) ) server <- function(input, output, session) { output$dt <- DT::renderDataTable({ DT::datatable( mtcars, style = 'bootstrap', filter = 'top', rownames = FALSE, extensions = 'Buttons', selection = list(mode = 'single'), options = list( pageLength = 10, dom = '<"top"ifl>t<"bottom"Bp>', buttons = c('copy', 'csv', 'excel'), searchHighlight = TRUE ) ) }) rv <- reactiveValues(val = FALSE) observeEvent(input$go, { rv$val <- input$go }) observeEvent(input$dt_rows_selected, { rv$val <- FALSE }) output$selected <- DT::renderDataTable({ if (rv$val == FALSE) return() reactive({ validate(need(input$dt_rows_selected != "", "Select a row.")) mtcars[input$dt_rows_selected, ] }) -> .mtcars isolate({ DT::datatable( .mtcars(), style = 'bootstrap', filter = 'top', rownames = FALSE, extensions = 'Buttons', selection = list(mode = 'single'), options = list( pageLength = 10, dom = '<"top"ifl>t<"bottom"Bp>', buttons = c('copy', 'csv', 'excel'), searchHighlight = TRUE ) ) -> table }) table }) } shinyApp(ui, server)

没有第二张桌子看起来还不错:

r shiny reactive-programming dt
1个回答
1
投票
问题是由

style = 'bootstrap'

 部分引起的,它与 
return(NULL)
 不能很好地配合。将输出中的 
if (rv$val == FALSE) return()
 替换为 
req(rv$val)
 解决了问题。已参考
这里

© www.soinside.com 2019 - 2024. All rights reserved.