You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在reactable的下拉区域中嵌入Shiny滑块组件

解决reactable下拉区域无法显示sliderInput的问题

问题出在reactable的details回调中直接使用sliderInput——reactable默认生成静态HTML,而Shiny输入组件需要通过Shiny的UI渲染机制才能正常工作。以下是修正后的完整解决方案:

核心修改点

  • 为每行的sliderInput设置唯一inputId,避免组件交互冲突
  • 在details中用uiOutput动态挂载Shiny组件
  • 在server端通过renderUI生成对应行的sliderInput实例

完整可运行代码

library(reactable)
library(tidyverse)
library(shiny)
library(shinyWidgets)

df <- data.frame(
  areas = c('A', 'B', 'C', 'D'),
  col = c('Trick', 'Trick', 'Trick', 'Trick'),
  W = c(5.04, 4.57, 3.5, 3333.2),
  Z = c(1113.415, 1.3, 1.23, 1.09),
  E = c(1122245.27, 11300, 34999.98, 803)
)

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

server <- function(input, output, session) {
  output$table_left <- renderReactable({
    reactable(
      df,
      style = list(fontFamily = "Roboto, sans-serif", fontSize = "0.875rem"),
      striped = TRUE,
      details = function(index) {
        htmltools::div(
          style = list(padding = "1rem"),
          # 动态渲染带唯一ID的slider组件
          uiOutput(paste0("proj_slide_", index)),
          div(
            class = "first_model_inf",
            h3("Model Info"),
            # 显示当前行的子表格,而非完整数据集
            reactable(df[index, ], outlined = TRUE, highlight = TRUE, fullWidth = FALSE)
          )
        )
      },
      onClick = "expand",
      rowStyle = list(cursor = "pointer")
    )
  })
  
  # 为每一行生成独立的sliderInput
  observe({
    lapply(1:nrow(df), function(index) {
      output[[paste0("proj_slide_", index)]] <- renderUI({
        sliderInput(
          inputId = paste0("proj_slide_", index),
          label = "SHINE DATE RANGER SLIDE",
          width = '50%',
          min = as_date("2006-01-01"), 
          max = as_date("2021-06-01"),
          value = c(as_date("2006-01-01"), as_date("2021-06-01"))
        )
      })
    })
  })
}

shinyApp(ui, server)

额外修正说明

  • 移除了原代码中错误的sales <- df$df[index]语句,改为直接提取当前行数据df[index, ]
  • 为下拉区域添加了padding样式,优化内容显示间距
  • 子表格仅展示当前行数据,避免重复显示完整数据集

内容的提问来源于stack exchange,提问作者Laura

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 21:18:19