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

bslib中page_navbar使用nav_select切换页面失效问题求助

bslib page_navbar中nav_select无法切换页面的问题

在用bslib的page_navbar组件时,遇到nav_select无法切换页面的问题,怀疑和导航标签的插入方式有关。

原本通过nav_insert动态插入导航面板(仅用户登录时激活),虽知晓应使用nav_panel_hidden,但开发进度不允许切换到navbarPage配合updateNavbarPage()函数。尝试直接在page_navbar中用常规方式定义导航面板后,问题仍未解决。此外,页面内的navset_card_tab使用nav_select可正常工作,但无法实现跨页面切换。

需求是点击按钮后从Page 1切换到Page 2,相关示例代码如下:

第一段代码(动态插入面板)

shinyApp(
  ui = page_fillable(
    page_navbar(title='Reprex',
                padding=c(0,0,0,0),
                bg='#e6e6e6',
                id='tabs'
    )
  ),
  
  server = function(input, output, session) {
    
    nav_insert(id='tabs',select=FALSE,position='before',
               as_fill_carrier(nav_panel(title='Page 2',id='page2')))
    nav_insert(id='tabs',select=TRUE,position='before',
               as_fill_carrier(nav_panel(title='Page 1',id='page1',
                                         actionButton(inputId='changePage',label='Change Page'))))
    
    observeEvent(input$changePage,{
      
      nav_select(
        id='tabs',
        selected = "page2"
      )
      
    })
  
  })

第二段代码(静态定义面板)

shinyApp(
  ui = page_fillable(
    page_navbar(title='Reprex',
                padding=c(0,0,0,0),
                bg='#e6e6e6',
                id='tabs',
                nav_panel(title='Page 2',id='page2'),
                nav_panel(title='Page 1',id='page1',
                          actionButton(inputId='changePage',label='Change Page'))
    )
  ),
  
  server = function(input, output, session) {
    
    observeEvent(input$changePage,{
      
      nav_select(
        id='tabs',
        selected = "page2"
      )
      
    })
  
  })

实际应用中,该按钮用于触发编辑特定字段,编辑页面已能成功加载对应ID的内容,但无法切换到该页面。

内容的提问来源于stack exchange,提问作者Sam

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 00:48:28