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

嵌套Shiny模块无法响应Action Button点击的问题求助

解决嵌套Shiny模块中Action Button无响应的问题

问题出在父模块server_1调用子模块server_2时,错误地使用了NS(id)处理子模块的id。Shiny的moduleServer会自动处理父模块的命名空间,子模块的id只需传入原始名称,不需要额外用NS()转换。

修正后的代码如下:

library(shiny)

ui_2 <- function(id){
  ns <- NS(id)
  actionButton(ns('go'), 'go')
}
server_2 <- function(id) {
  moduleServer(id, function(input, output, session){
    observeEvent(input$go, print('working!'))
  })
}

ui_1 <- function(id) {
  ns <- NS(id)
  fluidRow(
    ui_2(ns('two'))
  )
}

server_1 <- function(id) {
  moduleServer(id, function(input, output, session) {
    # 关键修改:直接传入子模块名称'two',无需用NS(id)包裹
    server_2('two')
  }) 
}

ui <- fluidPage(
  ui_1('one')
)

server <- function(input, output, session) {
  server_1('one')
}

shinyApp(ui, server)

修改后点击按钮就能在控制台打印working!了。

内容的提问来源于stack exchange,提问作者n-go

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 00:04:53