使用刷新按钮以闪亮方式更新我的数据

问题描述 投票:0回答:1

我正在尝试向我闪亮的应用程序添加一个数据刷新按钮,因此一旦我将新行插入到我的sql表中,该行就会出现在我的数据中,而无需完全重新启动应用程序。可能还值得注意的是,这周我是闪亮的新手,所以我一边学习一边自我学习。

所以情况是我有我的数据,然后我使用文本框添加到我的闪亮数据中,我现在单击我创建的刷新按钮,但没有出现新数据。

#global
myMap = #grab data from sql
theCol = sort(unique(myMap$col))

#ui
actionButton(inputId = "refreshData",
                     label = "Refresh Data")

#server
observeEvent(input$refreshData, { 
theCol = reactive({
  myMap = #grab data from sql
  theCol= sort(unique(myMap$col))
})

})

我认为这不能正常工作,因为服务器设置得不是很好,所以当我单击“刷新数据”时,不会出现任何新内容,就像它从启动时仍在使用表一样。从网上搜索

reactiveVal()
似乎是我在这里寻找的东西,但我不知道如何使用它。

r shiny
1个回答
0
投票

只是将评论中所说的内容放在一起。

input$refreshData
放入
reactive
内将依赖于它,即使它的值(每次单击按钮时增量 int)未在块中的任何位置使用。

现在

theCol
已成为一个响应式(基本上它是一个函数),您需要使用
theCol()
进行调用。

我添加了

observe
只是为了打印到控制台。

library(shiny)

# Define UI for application
ui <- fluidPage(
  
  # -- input button
  actionButton(inputId = "refreshData",
               label = "Refresh Data"))


# Define server logic
server <- function(input, output) {
  
  # update data
  theCol <- reactive({
    
    # -- just taking dependency on the actionButton 
    # (output value goes nowhere)
    input$refreshData
    
    # -- generates random strings
    myMap <- data.frame(col = do.call(paste0, replicate(5, sample(LETTERS, 3, TRUE), FALSE)))
    sort(unique(myMap$col))
    
  })

  observe(str(theCol()))
  
}

# Run the application 
shinyApp(ui = ui, server = server)
© www.soinside.com 2019 - 2024. All rights reserved.