Skip to content

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 type reactiveValues().
  • 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 fonction req(obj1, obj2) pour indiquer que le calcul ne doit pas démarrer tant que les obj1 et obj2 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 de validate(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éactif r$nouvel_objet réactif directement en le calculant dans son observeEvent()
Edited by Juliette Engelaere-Lefebvre