shiny搭配bslib时conditionalPanel的JS条件不生效问题
问题解答
你提到的input.tabs对应的JS输入变量没有被替换,问题出在bslib 0.3.0版本的page_navbar和shiny的conditionalPanel的条件解析逻辑兼容问题,以下是具体说明:
原因说明
bslib 0.3.0版本中,page_navbar的header区域被嵌入到Bootstrap导航栏的专属DOM容器内,shiny原生的条件求值逻辑无法正常解析点式写法的input.tabs引用,不是变量名被替换了。更高版本的bslib已经优化了这个兼容问题,无需修改写法也能正常识别点式引用。
修复方案
针对你当前使用的0.3.0版本,把conditionalPanel的condition参数的引用方式改成括号形式即可正常触发:
conditionalPanel( condition = "input['tabs'] == 'tab_1'", HTML("Special tab 1") )
验证方法
你可以在服务端添加观测逻辑确认input$tabs本身的取值是正常的:
server <- function(input, output) { observe(print(input$tabs)) }
切换标签时控制台会打印对应的标签值,说明输入变量本身没有变化。
内容的提问来源于stack exchange,提问作者tic-toc-choc
相关产品推荐
相关产品推荐

