我在navbarPage的tabPanel中有一个带有mainPanel和sidebarPanel的 Shiny 应用程序。我需要一个选项来隐藏sidebarPanel,类似于:Hide sidebar in default in shinydashboard和https://github.com/daattali/shinyjs/issues/43。
一个actionButton应该控制sidebarPanel是显示还是折叠。
这是代码:
library(shiny)
library(shinyjs)
ui <- fluidPage(
navbarPage("",
tabPanel("tab",
sidebarPanel(
useShinyjs()
),
mainPanel(actionButton("showSidebar", "Show sidebar"),
actionButton("hideSidebar", "Hide sidebar")
)
)
)
)
server <-function(input, output, session) {
observeEvent(input$showSidebar, {
shinyjs::removeClass(selector = "body", class = "sidebarPanel-collapse")
})
observeEvent(input$hideSidebar, {
shinyjs::addClass(selector = "body", class = "sidebarPanel-collapse")
})
}
shinyApp(ui, server)
希望有人可以帮助:)
最佳答案
我已经修改了您的代码以隐藏和显示侧边栏。为了创建id
的sidebarPanel
,我将其包含在div中,并为其指定了id = Sidebar
。为了显示和隐藏侧栏,我使用了shinyjs
函数show
和hide
,其ID为Sidebar
。
library(shiny)
library(shinyjs)
ui <- fluidPage(
useShinyjs(),
navbarPage("",
tabPanel("tab",
div( id ="Sidebar",sidebarPanel(
)),
mainPanel(actionButton("showSidebar", "Show sidebar"),
actionButton("hideSidebar", "Hide sidebar")
)
)
)
)
server <-function(input, output, session) {
observeEvent(input$showSidebar, {
shinyjs::show(id = "Sidebar")
})
observeEvent(input$hideSidebar, {
shinyjs::hide(id = "Sidebar")
})
}
shinyApp(ui, server)
希望能帮助到你!