如何解决在 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 举报,一经查实,本站将立刻删除。