闪亮:单击操作按钮时显示主面板

hel*_*rld 4 r shiny shiny-server shinydashboard

有没有办法仅在用户单击操作按钮时显示 mainPanel 中的所有内容?我在互联网上搜索了一段时间的答案,但找不到真正的答案。我知道我可以使用隐藏 - 它适用于主面板内的较小元素,例如单击时显示图片,但不适用于整个主面板本身。有什么建议么?我认为找到一种方法将整个主面板包裹在隐藏中,而不是将 mainPanel 中的每个元素包裹在隐藏中会更容易,但我似乎找不到一种方法来使其工作。

在仪表板主体中:

fluidRow(
  column(12, actionButton("analyze", "Fetch Data!", width = "100px"))), 

hidden(    
     mainPanel(  
        hidden( (htmlOutput("artistpic")), // this works fine & shows on button click
        infoBoxOutput("approvalBox"))     
            )),
Run Code Online (Sandbox Code Playgroud)

服务器:

  pic <- eventReactive(input$analyze2, {
      print(get_id_picture()[3])
      url = toString(get_id_picture()[3])
      print(url)
      url 
  })
  output$artistpic <- renderText({c('<img src="',pic(),'"width="17%" height="17%">')})
Run Code Online (Sandbox Code Playgroud)

mic*_*404 5

这对于s ​​hinyjs来说很容易。

只需mainPanel()div()标签包围,以便您可以使用它的 id 来切换其可见性,并使用隐藏的 div 标签启动应用程序,hidden()如下例所示:

# ui.R

fluidPage(
  useShinyjs(),
  actionButton("toggle.main.button", "Toggle Main"),
  div(id = "main",
    mainPanel(
      p("This paragraph is in main."),
      p("This one too!")
    )
  ) %>% shinyjs::hidden()
)

# server.R

library(shinyjs)

function(input, output, session) {

  # Toggling visability of main on button click.
  observeEvent(input$toggle.main.button, {
    shinyjs::toggle("main")
  })

}
Run Code Online (Sandbox Code Playgroud)