renderUI,加载数据然后在R Shiny

时间:2016-12-07 14:30:38

标签: r shiny

这可能很简单。但是当一个反应值改变时,我想从server.R渲染一个UI,然后加载一些数据,运行一些函数,然后渲染一个新的UI。但是我似乎无法让它工作,因为它只是等待2 sek然后显示最后一个renderUI(在此期间没有显示loadUI)。

我知道我可以使用shinyJS(https://github.com/daattali/advanced-shiny/tree/master/loading-screen),但是对于我正在做的事情,我想展示一个全新的页面,加载我的数据,然后显示另一个新页面。< / p>

ui <- fluidPage(
  actionButton(inputId = "btn_data", label = "Load Data"),
  uiOutput("page")
)

server <- function(input, output) {

  rv <- reactiveValues(loaddata = FALSE)

  observeEvent(input$btn_data, {
    rv$loaddata <- TRUE
  })

  observe({

    if(rv$loaddata){

      #Page to show, when loading data - loadUI
      output$page <- renderUI({
        p("Loading data...")
      })

      #Running functions and loading data
      Sys.sleep(2)

      #Page to show when data is loaded
      output$page <- renderUI({
        p("Data is now loaded")
      })

    }

  })

}

shinyApp(ui = ui, server = server)

0 个答案:

没有答案