繁体   English   中英

在服务器中调用的 updateSelectInput() 未刷新 Shiny 中的 UI

[英]updateSelectInput() called in Server not refreshing UI in Shiny

我有一个简单的 UI,我想用查询结果填充 selectInput。

ui <- fluidPage(
  theme = bs_theme(version = 4, bootswatch = "minty"),
  headerPanel("Adverse Event Fuzzy Search Tool"),
  
  fluidRow(
    column(3, selectInput("ingredients", label = "Select on or more Active Ingredients:", choices = NULL, multi=TRUE, 
                          selectize = TRUE)),
  
    column(3, textInput("search_term", "AE Search Term:")),
    
    column(3, sliderInput("search_tolerance", label = "Search Tolerance, lower means more accuracy:",
                          min = 0, max = 0.7, value = 0.2, step = 0.05)),
    
    column(3, actionButton("do_search", "Perform Search"))
  )
  ,fluidRow(
    reactableOutput("search_results")
  )
  
  
)

在我的服务器中,我正在创建调用函数的反应器,这些函数查询 Oracle 并返回 dataframe。 这些函数有效,因为我之前在 app.R 的根目录中调用这些函数。

但是我的 selectInput 没有得到更新。 我原以为反应会在 session 启动时初始化。

server <- function(input, output, session) {
  
  # retrieve master data set for session
  cases_df <- reactive({
    return(get_adverse_events_from_db())
  })
  
  ingredients_df <- reactive({
    df <- get_list_of_actives_from_db()
    message(paste("Length of actives: ", nrow(df)))
    
    updateSelectInput(session, 
                      "ingredients",
                      label = "Select on or more Active Ingredients:",
                      choices = df$PRIMARY_SUSPECT_KEY_INGREDIENT,
                      selected = NULL 
    )
    
    return(df)
    
  })

}

reactive用于返回一个值, observeEvent用于其副作用,例如更新 UI。 尝试:

server <- function(input, output, session) {
  
  # retrieve master data set for session
  cases_df <- reactive({
    return(get_adverse_events_from_db())
  })
  
  ingredients_df <- reactive({
    df <- get_list_of_actives_from_db()
    message(paste("Length of actives: ", nrow(df)))
    
    return(df)
    
  })
  
  observeEvent(ingredients_df(), {
    updateSelectInput(session, 
                      "ingredients",
                      label = "Select on or more Active Ingredients:",
                      choices = ingredients_df()$PRIMARY_SUSPECT_KEY_INGREDIENT,
                      selected = NULL 
    )
  })
  
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM