闪亮 - uiOutput 和 UI 布局问题

Shiny - uiOutput and UI layout problems

现在,我把右边的UI封装成一个变量,我想让右边的UI根据"Module Selected."变化,这是这样的我现在正在做这个:

ui <- navbarPage('test',
  tabPanel('Analysis',
    fluidRow(
      ui_core,
      uiOutput('ui_module')
    ) 
  )
)

output$ui_module <- renderUI({
# observeEvent(input$core_module_selection, {
  current_module <- NULL
  if(!is.null(input$core_module_selection) && input$core_module_selection != 'Core') {
    current_module <- rval$module_ui[[match(input$core_module_selection, rval$module_names)]]
    rval$ui_module <<- current_module
  }

  return(rval$ui_module)
})

我正在为 ui_module 变量使用反应值 (rval),它包含我要渲染的 UI:

ui_filetrans <-
tabsetPanel(
  tabPanel('File Transfer',
    p("filetrans")
  )
)
register_module("File Transfer", ui_filetrans)

最终应该是这样的:

ui <- navbarPage('Granatum',
  tabPanel('Analysis',
    fluidRow(
      ui_core,
      tabsetPanel(
        tabPanel('File Transfer',
          p("filetrans")
        )
      )
    ) 
  )
)

但是,相反,我得到了这个奇怪的文本(我猜它是 Bootstrap class 或其他东西)据说来自标签...而不是完整的对象。

我做错了什么?将对象分配给矢量后,对象的类型是否会发生变化?

事实证明,通过将 Shiny UI 元素传递给向量,您将隐式删除对象的一些信息。

解决办法是用list,用双方括号索引:

rval$module_ui <- list(ui_core)

rval$module_ui <- c(rval$module_ui, list(module))

c(),连接函数,对列表的作用非常相似,但确保在连接之前将 "atoms" 或原子组件转换为列表。