【发布时间】:2020-11-09 21:15:53
【问题描述】:
我围绕reactiveValues() 变量转储创建了一个闪亮的应用程序。使用observeEvent() 观察一个简单的操作按钮,我使用自定义函数填充这些值。此外,我正在尝试观察其中一个 (Query$A) 以更新另一个输入元素。
shinyServer(function(input, output, session) {
Query <- reactiveValues(A=NULL, B=NULL)
observeEvent(input$SomeActionButton,{
Query$A <- SomeCustomFunction(url)
Query$B <- SomeOtherFunction(sqlScheme)
updateSelectizeInput(session, "QueryScheme", choices = Query$B)
})
observe(Query$A, {
QueryNames <- sort(names(Query$B))
updateSelectizeInput(session, "SortedSchemes", choices = QueryNames)
})
})
这可能不会让一些更资深的 Shiny 开发人员感到惊讶,
Error in .getReactiveEnvironment()$currentContext() :
Operation not allowed without an active reactive context. (You tried to do something that can only be done from inside a reactive expression or observer.)
我想我明白为什么这不起作用,那么问题是该怎么办?我发现isolate() 在反应式上下文之外工作,但我不确定这是否是实现这种逻辑的正确方法。
我最终会尝试基于不需要操作按钮的观察者进行多个输入。这是可能的还是我在这里滥用了这个概念?
【问题讨论】: