我想观察 input
中的变化。当 input
更改时,应更新 output
。
output = reactiveValues(a = 10)
input = reactiveValues(act1 = 0, act2 = 0)
eventReactive(input$act1, { output$a = 20 })
eventReactive(input$act2, { output$a = 30 })
isolate(input$act1)
# 0
isolate(output$a)
# 10
input$act1 = 1
isolate(output$a)
# 10
isolate(input$act1)
# 1
我原以为
output$a
在更改 input$act1
后会变成 20。但这并没有发生。由于
input
是一个 react 值对象,它应该调用 eventReactive
返回的 react 表达式对象。为什么 output$a
没有更新? 最佳答案
eventReactive
确实返回一个响应式(Reactive)表达式,它是一个函数并且被惰性计算。要评估响应式(Reactive)表达式,需要满足两个条件:
由于您的代码会立即丢弃新创建的表达式,因此很明显它们不是依赖值,也没有理由进行评估。
据我了解您的意图,您需要的是一个观察者,与响应式(Reactive)表达不同,它会被急切地评估。
observeEvent(somevent, { someAction() })
附带说明一下,对副作用使用响应式(Reactive)表达式通常不是一个好习惯。
关于r - 在 R Shiny 中观察输入的变化并更新输出,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32664872/