Implémenter les bonnes pratiques de réactivité
Réactivité shiny : principes et conventions à respecter
- Plus de
mon_objet_reactif ← reactive(…)
- Tous les objets réactifs sont déclarés/créés dans une liste nommée
r
, de typereactiveValues()
. - En l'absence de modules, ils doivent tous faire partie de cette liste, il n'y a pas d'autres
reactiveValues()
à créer. - Les objets réactifs sont donc de type
r$mon_objet_reactif
- Tous les calculs d'objets réactifs se font à l'intérieur d'un
observeEvent()
, cela permet de ne déclencher les calculs qu'au moment opportun. Pour retarder le calcul, utiliser la fonctionreq(obj1, obj2)
pour indiquer que le calcul ne doit pas démarrer tant que lesobj1
etobj2
ne sont pas valides. Attention⚠ Attention, il peuvent rester valides des choix précédents que l’on cherche à effacer, il faut penser à les vider si besoin, - Un
observeEvent()
ne s’assigne pas, les calculs d’objets réactifs se passent à l’intérieur - Chaque output est rempli à partir d'un objet réactif de la liste
r
, avec le moins de calcul possible. - En option, la fonction
renderType({r$mon_objet_Type})
peut être agrémentée devalidate(need())
pour remplir les outputs le temps des calculs (cf page dédiée). - Si on a besoin d'affecter aux objets réactifs une valeur au démarrage, on l'indique dans
r <- reactiveValues()
comme ça a été fait dans l'app Indicateurs territoriaux, sinon, on peut créer un nouvel objet réactifr$nouvel_objet
réactif directement en le calculant dans sonobserveEvent()
Edited by Juliette Engelaere-Lefebvre