微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Shiny 中隐藏/显示菜单项

如何解决在 Shiny 中隐藏/显示菜单项

我想在用户选中一个框时隐藏和显示一个菜单项。我使用了 useShinyjs()renderMenu() 函数,但是一旦显示了 menuItem,我就无法通过取消选中该框来再次隐藏它。

这就是我所做的:

library(shiny)
library(shinydashboard)
library(shinyjs)

header <- dashboardHeader(title = "my app")

sidebar <- dashboardSidebar(
  sidebarMenu(id="menu",menuItem("Tab 1",tabName = "tab1",icon = icon("question")),menuItemOutput("another_tab"),menuItem("Tab 2",tabName = "tab2",icon = icon("home"))
              )
  )
)

body <- dashboardBody(
  tabItems(
    tabItem(tabName = "tab1",useShinyjs(),checkBoxInput("somevalue","Check me",FALSE)
    )
  )
)

ui <- dashboardPage(header,sidebar,body)

server <- function(input,output) {
  output$another_tab <- renderMenu({
    if(input$somevalue == TRUE)
      menuItem("My tab",tabName = "tab3",icon = icon("cogs"))
  })
}

shinyApp(ui,server)

我们怎样才能再次隐藏菜单项?

解决方法

另一种方法是

  output$another_tab <- renderMenu({
    if(input$somevalue == TRUE) {
      menuItem("My tab",tabName = "tab3",icon = icon("cogs"))
    }else shinyjs::hide(selector = "a[data-value='tab3']" )
  })
,

您可以创建一个空的 menuItem()

server <- function(input,output) {
  output$another_tab <- renderMenu({
    if(input$somevalue == TRUE)
      menuItem("My tab",id="tab3",icon = icon("cogs"))
    else
      menuItem(NULL)
  })
}


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