您可以使用一点点 javascript 来禁用选项卡。我在最近的博客文章中有一个如何隐藏选项卡(不禁用)的示例,您可以查看该 here 的代码。我修改了该代码以禁用它。
这段代码很老套,因为它在 2 分钟内完成,但适用于基本用例
library(shiny)
library(shinyjs)
jscode <- '
shinyjs.init = function() {
$(".nav").on("click", ".disabled", function (e) {
e.preventDefault();
return false;
});
}
'
css <- '
.disabled {
background: #eee !important;
cursor: default !important;
color: black !important;
}
'
shinyApp(
ui = fluidPage(
useShinyjs(),
extendShinyjs(text = jscode, functions = "init"),
tags$style(css),
checkboxInput("foo", "Disable tab2", FALSE),
tabsetPanel(
id = "navbar",
tabPanel(title = "tab1",
value = "tab1",
h1("Tab 1")
),
tabPanel(title = "tab2",
value = "tab2",
h1("Tab 2")
),
tabPanel(title = "tab3",
value = "tab3",
h1("Tab 3")
)
)
),
server = function(input, output) {
observe({
toggleClass(condition = input$foo,
class = "disabled",
selector = "#navbar li a[data-value=tab2]")
})
}
)
编辑当我发布我的答案时,我没有完全阅读这个问题,我只是看到你想要一种禁用标签的方法,这就是我的答案。您的特定用例(创建一个仅显示用户名的选项卡)有点奇怪,但我想这仍然有效......