首页 > 解决方案 > 在 Shiny 中隐藏/显示菜单项

问题描述

当用户选中一个框时,我想隐藏并显示一个 menuItem。我使用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)

我们怎样才能再次隐藏 menuItem 呢?

标签: rshinyshinydashboardshinyjs

解决方案


另一种方法是

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

推荐阅读