Shiny:renderUI和Shiny:uioutput产生一个新的menuItem和一个新的输出,但是tabItem没有显示

如何解决Shiny:renderUI和Shiny:uioutput产生一个新的menuItem和一个新的输出,但是tabItem没有显示

我想基于actionButton创建新的menuItem和新的plotOutput,新渲染的plotOutput将根据提交的值显示一个图。我已经成功生成了带有提交值的menuItem和numericInput小部件,但是未显示该图和相应的tabItem。
这是工作流程:

提交->使用输入对象和plotOutput渲染menuItem->将基于渲染的输入对象显示plotOutput

第二个步骤成功,但其余步骤不起作用,下面列出了代码

library(shiny)
library(shinydashboard)

## ============================================ Define ui ==================================================

header1 <- dashboardHeader(
  title = "My Dynamic Menu"
) #dashboardHeader

# DYNAMIC UI
sidebar1 <- dashboardSidebar(
  sidebarMenu(
    menuItem('aa',tabName = 'aa')
  ),sidebarMenuOutput('bb')
) #dashboardSidebar
#
body1 <- dashboardBody(
  tabItems(
    tabItem(tabName = 'aa',numericInput('num_input','number',value = 5),actionButton('submit','Submit')),tabItem(tabName = "main",uIoUtput('eee')) # put a tabItem here
  ) #tabItems
) #dashboardBody

ui <- dashboardPage(header1,sidebar1,body1)

server <- function(input,output,session) {
  dt<-eventReactive(input$submit,{
    input$num_input * 5
  })
  
  observeEvent(input$submit,{
    output$bb<-renderMenu({
      sidebarMenu(
        menuItem("Main",tabName = "main",numericInput('ddd','input value',value = dt()),numericInput('ggg','another input',value=dt()+5))
      )
    })
    
    output$eee<-renderUI({
      fluidRow(
        p('hello'),plotOutput('fff')
      )
    })
  })
  
  
   observeEvent({
     input$ddd
     input$ggg
   },{
       output$fff<-renderPlot({
       plot(1:input$ddd,main=as.character(input$ggg))
     })
   })
  
} #server
## ============================================ Run application ============================================
shinyApp(ui,server)

非常感谢您解决此问题。

解决方法

要与tabItem链接,menuItem仅应包含menuSubItem。如果删除两个数字输入(ddd和ggg),则在单击新创建的主菜单项时将激活主页。混合导航和输入不是一个好主意。

最好将输入内容移至主tabItem或将其放在侧边栏中的单独面板中(不在菜单中)。

为ui中的输入添加了uiOutput

# DYNAMIC UI
sidebar1 <- dashboardSidebar(
  sidebarMenu(
    menuItem('aa',tabName = 'aa')
  ),sidebarMenuOutput('bb'),uiOutput("inputs")
) #dashboardSidebar

为此服务器中的输出添加了renderUI

output$inputs <- renderUI(tagList(
      numericInput('ddd','input value',value = dt()),numericInput('ggg','another input',value=dt()+5)
    ))

并从renderMenu中删除了输入

output$bb<-renderMenu({
      message("bb")
      sidebarMenu(
        menuItem("Main",tabName = "main")
      )
    })

您必须手动导航到主页才能显示图

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?