这可能很简单。但是当一个反应值改变时,我想从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)