R 是否可能有一个条件为全局变量的闪亮条件面板?

R 是否可能有一个条件为全局变量的闪亮条件面板?,r,shiny,R,Shiny,我的目标是将tabsetPanel包装在条件面板中,条件是全局变量为false 用户界面 全球 searchPage <- "true" searchPage您尝试的方式实际上不可能实现(服务器和客户端位于不同的环境中,不共享变量)。您将需要显式地将值从服务器传递到客户机,有不同的方法来实现这一点。单向: library(shiny) runApp(list(ui = fluidPage( conditionalPanel(condition='output.bool',

我的目标是将tabsetPanel包装在条件面板中,条件是全局变量为false

用户界面

全球

searchPage <- "true"

searchPage您尝试的方式实际上不可能实现(服务器和客户端位于不同的环境中,不共享变量)。您将需要显式地将值从服务器传递到客户机,有不同的方法来实现这一点。单向:

library(shiny)
runApp(list(ui = fluidPage(
  conditionalPanel(condition='output.bool',
                   HTML("Hello world")),
  actionButton("btn","Press me to toggle")
),
server = function(input, output, session) {
  value=TRUE
  output$bool <- eventReactive(input$btn,{
    value    
  })
  outputOptions(output,"bool",suspendWhenHidden=FALSE)

  observeEvent(input$btn,
               value <<- !value        
  )  

}))
库(闪亮)
runApp(列表(ui=fluidPage(
conditionalPanel(condition='output.bool',
HTML(“你好世界”),
操作按钮(“btn”,“按我切换”)
),
服务器=功能(输入、输出、会话){
值=真

输出$bool正如在问题帖子的评论中提到的,这是
toggle()
/
show()
/
hide()的完美用例
函数。当您需要有条件地显示条件不是输入的简单javascript表达式的内容时,可以很容易地使用这些函数而不是
条件面板()


为了使用这些函数,您需要有某种方法来指定要隐藏/显示的元素(在本例中,是
mainPanel()
)。最简单的方法是将整个面板包装在一个带有id的div中。因此,像
mainPanel(div(id=“mainPanel”,…)一样定义面板
瞧,您的面板有一个id,现在您可以在服务器代码中随时调用
shinyjs::show(“主面板”)
hide()

这是
shinyjs::toggle()的经典用例
。每次我需要有条件地显示条件不是输入的简单javascript表达式的内容时,我都会使用shinyjs::show()或hide()或toggle()我在整个项目中都使用了toggle/hide/show,但我不知道是否可以为整个面板分配一个id,那么您如何调用来隐藏整个面板呢?您可以将整个面板包装在一个带有id的div中。因此,请定义面板,如
mainPanel(div(id=“mainPanel”,…)
瞧,你的面板上有一个id^这个解决方案比选择的答案好得多。在这种情况下,我添加了一个正确的“答案”,这样如果你愿意,你可以更改选择的答案谢谢!你的演示效果很好,但由于某些原因,我仍然无法在我的项目中正确使用它(它要么始终显示面板,要么从不显示)。我会继续尝试,但你介意解释一下输出选项吗?它基本上只是声明输出。bool?输出选项基本上告诉服务器确保bool的值始终向客户端公开。哦,好的,谢谢你的帮助!我现在已经让它半工作了-每隔一段时间它都工作(一个按钮用于显示,一个按钮用于隐藏),所以我至少取得了进展。haI遇到了一个类似的问题,这使它变得如此简单。感谢@DeanAttali的软件包!
 observeEvent(input$openButton, 
           output$results <- renderUI({
             textOutput("")
             searchPage <- "false"
           }))
library(shiny)
runApp(list(ui = fluidPage(
  conditionalPanel(condition='output.bool',
                   HTML("Hello world")),
  actionButton("btn","Press me to toggle")
),
server = function(input, output, session) {
  value=TRUE
  output$bool <- eventReactive(input$btn,{
    value    
  })
  outputOptions(output,"bool",suspendWhenHidden=FALSE)

  observeEvent(input$btn,
               value <<- !value        
  )  

}))