R Shiny模块化应用使用reactiveValues出现会话隔离异常问题
问题说明
我有一个部署在shinyapp.io上的模块化Shiny应用,以下是简化后的复现示例。当前存在的问题是:打开该应用的两个实例窗口时,其中一个窗口的操作会同步影响另一个窗口。经排查,问题疑似由server部分的reactiveValues(r_global <- reactiveValues())导致。
复现代码
library(shiny) #%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% # 模块部分 ---- #%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% counterButton = function(id, label = "计数器") { ns = NS(id) tagList(actionButton(ns("button"), label = label), verbatimTextOutput(ns("out")), dataTableOutput(ns("table"))) } counterServer <- function(id, r_global) { moduleServer(id, function(input, output, session) { r_global$count = 0 observeEvent(input$button, { r_global$count = r_global$count + 1 if (input$button == 3) { output$table <- renderDataTable({ mtcars }) } else{ output$table <- renderDataTable({ iris }) } }) output$out <- renderText({ r_global$count }) }) } #%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% # UI部分 ---- #%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ui = fluidPage(h1("测试"), counterButton("counter1", "计数器 #1")) #%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% # Server部分 ---- #%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% server <- function(input, output, session) { r_global <- reactiveValues() counterServer("counter1", r_global = r_global) } shinyApp(ui, server)
示例截图

内容的提问来源于stack exchange,提问作者nimliug
相关产品推荐
相关产品推荐

