I read the Shiny documentation about reactive programming a few times now, but I can't properly understand the difference between observeEvent
and eventReactive
.
The documentation says:
Use observeEvent whenever you want to perform an action in response to an event. (Note that "recalculate a value" does not generally count as performing an action–see eventReactive for that.)
....
Use eventReactive to create a calculated value that only updates in response to an event. This is just like a normal reactive expression except it ignores all the usual invalidations that come from its reactive dependencies;
In all the situation I tried I saw no difference between using observeEvent
and eventReactive
(the code works just fine regardless the function I use, with no apparent impact in performances).
Can you help me figure out what is the real difference between the two? Ideally I would like a few examples showing when they are interchangeable, one when observeEvent
would work but not eventReactive
and vice versa.
It's like the difference between observe
and reactive
. One is intended to be run when some reactive variable is "triggered" and is meant to have side effects (observeEvent
), and the other returns a reactive value and is meant to be used as a variable (eventReactive
). Even in the documentation for those functions, the former is shown without being assigned to a variable (because it is intended to just produce a side effect), and the latter is shown to be assigned into a variable and used later on.