【发布时间】:2021-04-03 17:15:00
【问题描述】:
我正在尝试在闪亮的应用程序中创建动态选项卡
当用户输入一个api token,用于api调用生成表
如果api调用成功,我想显示标签1和2
但是,如果 api 调用不成功或显示错误,我想隐藏选项卡 1 和 2
我在下面有一个基本的代表,这似乎不起作用。
如何将 reactiveVal 的值传递给 if 语句?具体来说,如果 reactiveValue 尚不存在,我如何在 if 语句中检查这一点?可能是 validate(need()) 的某个版本?
感谢您的帮助
library(shiny)
ui <- function() {
fluidPage(
tabsetPanel("mytabs",
type = "tabs",
tabPanel("home",
textInput("enterval", label = "enterval"
)
),
tabPanel("tab1"),
tabPanel("tab2")
)
)
}
server <- function(input, output, session) {
vals <- reactiveValues(
a = NULL
)
vals$a <- eventReactive(input$enterval, {
# in reality, an api call creates an object (dataframe) when input$enterval is filled with a correct token
return(input$enterval)
})
observeEvent(input$enterval, {
if(is.null(vals$a()) # OR ERROR IS RETURNED FROM API CALL (vals$a) (possible to use validate(need()) here?)
) {
hideTab(inputId = "mytabs", target = "tab1")
hideTab(inputId = "mytabs", target = "tab2")
} else {
showTab(inputId = "mytabs", target = "tab1")
showTab(inputId = "mytabs", target = "tab2")
}
})
}
shinyApp(ui, server)
【问题讨论】:
标签: r shiny shiny-reactivity