更新 bs4dash 版本 2.00 Shiny 中的控制栏

Posted

技术标签:

【中文标题】更新 bs4dash 版本 2.00 Shiny 中的控制栏【英文标题】:Update Controlbar in bs4dash version 2.00 Shiny 【发布时间】:2021-04-23 02:40:41 【问题描述】:

我已移至新的 bs4dash,但在更新控制栏时遇到了一些问题。 对于我侧边栏上的每个不同选项卡,我想要一个相应的控制栏。例如,如果侧边栏选项卡是“主页”,我希望控制栏由多个 selectizeInputs 组成。但是,如果侧边栏选项卡是“新闻”,我希望控制栏有不同的文本输出。

这是我正在使用的一些代码

##UI
  controlbar = dashboardControlbar(
    id = "controlbar",
    collapsed = T
  
    )

##Server 

observeEvent(input$current_tab,
if(input$current_tab == "home")
updateControlbar(id = "controlbar", session = session,
selectizeInput("one", "one", choices = c(1,2,3)
), 
selectizeIntput("two", "two", choices = c(1,2,3)
 else if(input$current_tab == "News")
updateControlbar(id = "controlbar", session = session,
textInput("news1"),
textInput("news2")

)

我也尝试了许多其他组合,但似乎没有任何效果。 谢谢你的帮助

【问题讨论】:

您能发布完整的可重现代码吗?这将为那些想帮助你的人提供帮助。 【参考方案1】:

您可以将条件面板与反应式函数结合使用。这段代码 sn -p 显示了一个非常琐碎的案例。

library(shiny)
library(bs4Dash)

shinyApp(
    ui = dashboardPage(
        header = dashboardHeader(),
        sidebar = dashboardSidebar(uiOutput("sidebar")),
        body = dashboardBody(),
        controlbar = dashboardControlbar(uiOutput("controlbar"))
    ),
    server = function(input, output, session) 
        output$sidebar <- renderMenu(
            sidebarMenu(id = "main_menu",
                menuItem(text = "First page", tabName = "tab1"),
                menuItem(text = "Second page", tabName = "tab2")
            )
        )
        output$show_tab1 <- reactive(
            !is.null(input$main_menu) && input$main_menu == "tab1"
        )
        output$show_tab2 <- reactive(
            !is.null(input$main_menu) && input$main_menu == "tab2"
        )
        outputOptions(output, "show_tab1", suspendWhenHidden = FALSE)
        outputOptions(output, "show_tab2", suspendWhenHidden = FALSE)
        output$controlbar <- renderUI(
            div(
                conditionalPanel(
                    condition = "output.show_tab1",
                    p("Widgets for the first page")
                ),
                conditionalPanel(
                    condition = "output.show_tab2",
                    p("Widgets for the second page")
                )
            )
        )
    
)

【讨论】:

以上是关于更新 bs4dash 版本 2.00 Shiny 中的控制栏的主要内容,如果未能解决你的问题,请参考以下文章

R Shiny 在后台加载隐藏的侧边栏(使用 bs4Dash 包)

响应式更新模块化 Shiny 应用程序中的侧边栏

如何更改 Shiny Dashboard 中固定控制栏的颜色

在 R Shiny 中使用 ActionButton 跳转到选项卡项

在 bs4Dash R 闪亮应用中永久更改导航栏主题颜色

使用 Shiny 时,包 rcpp 不适用于(R 版本 2.15.2)