R Shiny独立模块获取输入报错问题求助
问题解决方法
你的问题出在对模块返回值的使用逻辑上:filtersServer返回的是包含响应式对象的列表,而非可直接调用的响应式函数。
修正后的完整代码
library(shiny) library(shinycssloaders) filtersUI <- function(id) { ns <- NS(id) tagList( # Program input ------ selectInput( inputId = ns('options'), label = 'Select program(s):', choices = c('A','B','C','D'), multiple = TRUE ) ) } filtersServer <- function(id){ moduleServer(id, function(input,output,session){ return( list( options = reactive({input$options}) ) ) }) } testUI <- fluidPage( filtersUI('inputs'), textOutput('filters') %>% withSpinner() ) testServer <- function(input,output,session) { filters <- filtersServer('inputs') output$filters <- renderPrint({ # 访问列表中的响应式对象并调用它获取当前值 filters$options() }) } shinyApp(ui=testUI,server=testServer)
关键说明
filters是一个普通列表,其中的options元素才是响应式对象,必须通过filters$options()的方式获取实时选中的值- 如果后续添加更多过滤器,想要一次性打印所有值,可以遍历列表中的响应式对象:
output$filters <- renderPrint({ lapply(filters, function(reactive_obj) reactive_obj()) })
内容的提问来源于stack exchange,提问作者Christine Swanson
相关产品推荐
相关产品推荐

