You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用bslib::accordion_panel_update()动态更新折叠面板标题

解决bslib折叠面板标题动态更新问题

你的问题出在**accordion_panel的参数匹配**上:bslib::accordion_panel_update()的target参数对应的是折叠面板的value属性,而非你设置的id属性。

修正后的完整代码如下:

ui <- bslib::page_sidebar(
    sidebar=bslib::sidebar(
        open="always",
        position="right",
        shiny::selectInput(
            inputId="acc_title", 
            label="Accordion Panel's title",
            choices=c("Title 1", "Title 2"),
            selected="Title 1",
            multiple=FALSE
        )
    ),
    bslib::card(
        "Some content",
        bslib::card_footer(
            bslib::accordion(
                id="acc",
                open=FALSE,
                multiple=FALSE,
                bslib::accordion_panel(
                    value="acc_panel", # 这里把id换成value
                    "Title 1",
                    "Accordion's content."
                )
            )
        )
    )
)
server = function(input, output, session) {
    shiny::observeEvent(input$acc_title, {
        bslib::accordion_panel_update(
            id="acc", 
            target="acc_panel",
            title = input$acc_title
        )
    })
}
shiny::runApp(shinyApp(ui, server))

关键说明:

  • accordion_panel的value参数是用来标识面板的唯一标识符,供accordion_panel_update定位目标面板;而id参数是给HTML元素设置的DOM ID,和update函数的定位无关。
  • 如果需要同时保留DOM元素的ID,可以同时设置id和value参数,比如:accordion_panel(id="panel_dom_id", value="acc_panel", ...),不影响update功能。

内容的提问来源于stack exchange,提问作者Karsten W.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 05:52:25