r - 没有新渲染的闪亮更新信息框
问题描述
我需要定期刷新信息框中显示的数据,但每次更新时都会呈现一个新的信息框,从而导致不良的用户体验。
我尝试使用 futures/promises 进行异步处理,但 renderinfobox 仍然会在数据更新时呈现一个新框。这是我的代码:
invalidateLater(30000)
results <-future({testFuture()})
return(value(results))
我希望能够更新信息框的基础数据,而无需在整个查询期间使 ui 元素变暗。
解决方案
无需在每次值更改时重新渲染信息框,您可以只重新渲染信息框的标题或值,正如我通过创建输出元素所展示的那样。我创建了一个工作示例,它刷新信息框以秒级显示当前时间。
library(shiny)
library(shinydashboard)
ui <- dashboardPage(
dashboardHeader(title = "Test App"),
dashboardSidebar(),
dashboardBody(
infoBox("TestBox", value = textOutput("currentTime"), subtitle = NULL,
icon = shiny::icon("bar-chart"), color = "aqua", width = 4,
href = NULL, fill = FALSE)
)
)
server <- function(input, output, session) {
output$currentTime <- renderText({
invalidateLater(1000, session)
paste(Sys.time())
})
}
shinyApp(ui = ui, server = server)
一定要试试你的代码,如果这有帮助,请告诉我!