我在navbarPage的tabPanel中有一个带有mainPanel和sidebarPanel的 Shiny 应用程序。我需要一个选项来隐藏sidebarPanel,类似于:Hide sidebar in default in shinydashboardhttps://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)

希望有人可以帮助:)

最佳答案

我已经修改了您的代码以隐藏和显示侧边栏。为了创建idsidebarPanel,我将其包含在div中,并为其指定了id = Sidebar。为了显示和隐藏侧栏,我使用了shinyjs函数showhide,其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)

希望能帮助到你!

09-15 12:19