我定义了一个反应式表达式,它对tabPanel的更改作出反应(根据输入$ navbar做出反应)。我真正想要的是这会导致导航到特定的tabPanel,但不会从该tabPanel导航远离。所以,当输入$ navbar从1变为2时我想要一个反应,但是当从2变为1时没有反应。我怎样才能做到这一点?
以下是我的代码的相关摘要,我认为我不需要完整的可重复示例,但如果我错了,请告诉我。
CLIENT 1-CHUNK 1 ROWS 384 BYTES PARALLEL 1-WAY ROUND ROBIN POINT LOOKUP ON 1 KEY OVER table_one
PARALLEL LEFT-JOIN TABLE 0
CLIENT 1-CHUNK PARALLEL 1-WAY ROUND ROBIN FULL SCAN OVER table_two
PARALLEL LEFT-JOIN TABLE 1(DELAYED EVALUATION)
CLIENT 1-CHUNK PARALLEL 1-WAY ROUND ROBIN FULL SCAN OVER table_three
SERVER FILTER BY FIRST KEY ONLY
答案 0 :(得分:2)
您可以使用if
语句。这样可确保代码仅在用户导航到相应的tab
时运行。
library(shiny)
shinyApp(
ui = navbarPage(
"App Title",
id = "navbar",
tabPanel("Plot"),
navbarMenu(
"More",
tabPanel("Summary"),
"----",
"Section header",
tabPanel("Table")
)
),
server = function(input, output){
observe({
if (req(input$navbar) == "Table")
message("Table has been selected")
if (req(input$navbar) == "Plot")
message("Plot has been selected")
})
}
)
我建议使用observe
而不是reactive
来确保一切都在运行,即使被动的所有观察者都处于空闲状态。