【发布时间】:2018-12-05 13:22:34
【问题描述】:
我正在构建一个闪亮的网络应用程序,但在使用 observeEvent 函数时遇到了问题。我用它来观察一些 UI 元素的变化,然后将其用作使用 renderPlot 的函数的参数。
问题是,当其中一个 UI 元素发生变化时,它会调用该函数两次。一次使用更改前的原始值,然后再次使用新值。这导致了我不会详细描述的问题,但我想修改任何必要的内容,以便它只使用新值调用该函数一次。有谁知道为什么observeEvent 会这样或者我该如何解决?谢谢
编辑:这是可疑代码
来自服务器:
observeEvent(c(input$single_expNum, input$trait_exp,
input$plotExp_by, input$single_expDayRange), {
output$single_expGraph <- plotExperiment(dataset,
input$single_expNum, input$trait_exp,
input$plotExp_by, input$single_expDayRange)
}
)
【问题讨论】:
-
observeEvent将handlerExpr中的所有内容都视为包装在isolate函数中,因此仅当input中的input或reactiveValue时才应触发eventExpr无效(更改)。如果不查看您的代码,就很难确定出了什么问题。你能发一个minimal reproducible example你的问题吗? -
我已更新帖子以包含一段代码
-
如果您传递多个要观察的输入,则应该使用大括号。
observeEvent({input$single_expNum, input$trait_exp..},{...} ) -
你为什么在这里使用
observeEvent?由于handlerExpr中的每个反应元素也在eventExpr中,这与使用reactive完全相同。 -
只有当我将它作为一个集合保存在推荐的大括号内时,它才会在语法上起作用,即使那样它对问题没有任何影响......