Shiny模块中无法获取tabsetPanel选中值的问题求助
问题解决:Shiny模块中无法获取tabsetPanel选中标签值
问题原因
你的模块服务器函数参数顺序写错了!Shiny模块的服务器函数必须遵循input, output, session的参数顺序,你把output放在了input前面,导致代码里的input实际上是模块的output对象,自然找不到tabSelector这个输入控件,才会报错Can't read output 'my_module-tabSelector'。
修正后的代码
library(shiny) # Define UI my_module_ui <- function(id) { ns <- NS(id) fluidPage( tabsetPanel( id = ns("tabSelector"), tabPanel("Land", value = "land", "Land Content"), tabPanel("Air", value = "air", "Air Content") ) ) } # 修正服务器函数的参数顺序:input在前,output在后 my_module_server <- function(input, output, session, notif_react) { ns <- session$ns observe({ print(input$tabSelector) }) } # App UI ui <- fluidPage( my_module_ui("my_module") ) # App Server server <- function(input, output, session) { callModule(my_module_server, "my_module") } # Run App shinyApp(ui, server)
验证效果
运行修正后的代码,切换标签时,控制台会正常打印当前选中的标签值(land或air),报错也会消失。
内容的提问来源于stack exchange,提问作者TimeIsNear
相关产品推荐
相关产品推荐

