Brillant: quelle est la différence entre observeEvent et eventReactive?
J'ai lu le Brillant de la documentation sur les réactifs de la programmation d'un peu de temps maintenant, mais je ne peux pas bien comprendre la différence entre observeEvent
et eventReactive
.
La documentation dit:
Utilisation observeEvent chaque fois que vous voulez effectuer une action en réponse à un événement. (À noter que "recalculer une valeur" n'a pas l'habitude de compter que l'exécution d'une action–voir eventReactive pour cela.)
....
Utilisation eventReactive pour créer une valeur calculée uniquement les mises à jour en réponse à un événement. C'est juste comme un réactif normal d'expression, sauf qu'elle ignore tous les invalidations qui proviennent de son réactive dépendances;
Dans toutes les situation, j'ai essayé je n'ai vu aucune différence entre l'utilisation de observeEvent
et eventReactive
(le code fonctionne très bien quelle que soit la fonction que j'utilise, sans impact apparent dans les prestations).
Pouvez-vous m'aider à comprendre quelle est la réelle différence entre les deux? Idéalement, j'aimerais que quelques exemples montrant quand ils sont interchangeables, l'une lorsque observeEvent
pourrait fonctionner, mais pas eventReactive
et vice versa.
Vous devez vous connecter pour publier un commentaire.
Comme @daatali est dire que les deux fonctions sont utilisées à différentes fins.
eventReactive
crée un réactif de valeur qui change en fonction de laeventExpr
toutobserveEvent
simplement est déclenché sur la baseeventExpr
C'est comme la différence entre
observe
etreactive
. L'un est destiné à être exécuté lorsque certains réactive variable est "déclenchée" est destinée à avoir des effets secondaires (observeEvent
), et l'autre renvoie un réactif de valeur et est destiné à être utilisé comme une variable (eventReactive
). Même dans la documentation de ces fonctions, la première est montré sans être affectée à une variable (parce que c'est prévu pour produire un effet secondaire), et le dernier est montré pour être affectée à une variable et utilisé plus tard.reactiveValues
objet de "recevoir" uneventReactive
? Ce que je comprends unreactiveValues
est similaire à unreactive
, mais je n'ai lu que des exemples deobserveEvent
de traiter avec eux. Vous ne savez pas si ce commentaire est vraiment dans le champ d'application de ce fil... mais si c'est le cas je peux en ouvrir un nouveau...Je pense que le haut niveau des aspects pratiques doivent être mis en évidence ici.
Un
eventReactive
crée un objet qui vous définir commereactive
n', mais avec l'habitude de réaction en chaîne de comportement que vous obtenezde
reactive
. Cependant, il est paresseusement évalué et mis en cache comme led'autres
reactives
.Un
observeEvent
ne peut pas créer un objet que vous définissez (ilcrée quelque chose d'autre). Il est immédiatement évaluée et pas de mise en cache.
C'est pour causer des effets secondaires.
Donc, si vous avez besoin d'un bloc de données, ou un vecteur, ou un terrain, ou quelque chose, mais que vous voulez dissocier de l'habituel réactif à la chaîne de réactions, l'utilisation
eventReactive
.Si vous voulez juste pour provoquer immédiatement un effet secondaire,
observeEvent
est votre billet.Fournissant la façon dont je le comprends , me corriger et ajouter plus d'informations que nécessaire . La plupart de l'information est de https://shiny.rstudio.com/articles/action-buttons.html
Code 1
code2