Replies: 2 comments 1 reply
-
Proposition de solutionzustandSource : #4231
|
Beta Was this translation helpful? Give feedback.
-
Après étude, il est possible d'améliorer l'outil actuel étape par étape pour obtenir une approche équivalente via le reducer déjà présent dans le simulateur. L'approche est disponible sous forme de POC dans le commit 2dfb3bf Voici les étapes envisageables pour passer sur ce nouveau format:
Tout ceci devra évidemment s'accompagner de TU :) |
Beta Was this translation helpful? Give feedback.
-
Etat actuel
Nous utilisons actuellement react final-form au sein de tous les simulateurs pour gérer notre state. Pour pouvoir récupérer de la données supplémentaires, nous sommes obligés de passer par une seconde library externe react final-form-listeners.
Limites de cette approche
1. Utilisation de de listeners au sein du code
Pour pouvoir observer le changement d'un state nous sommes obligés de le placer dans le
jsx
. Je ne pense pas que ça soit la meilleur des approches pour pouvoir écouter des changements.2. Gestions du state au sein de l'application
Nombreuses, sont les composants au sein du code, non optimisé, rentrant en conflit avec la gestion des listeners, e.g
Informations.jsx
qui utilise des functions qui reloadés à chaque changement du DOM.Cela fut problématique lorsqu'on envoya des events à Matomo.
Problème corrigé ici : #4222 avec l'utilisation de
useCallback
3. Récupération du state un peu n'importe où
Je trouve qu'il manque une reel cohérence au niveau des éléments qui exploite le state de
final-form
des sous composants uniquement lié à de la gestion de l'UI utilisent via le contexte final-form pour afficher de l'information. Ce n'est pas du tout en accord avec le principe de Single Responsibility des composants React4. L'utilisation du contexte qui est non optimisé
D'un point de vue de la performance, à chaque fois que le context est consumé ou changé, les components vont se re-render. Lors d'une mauvaise ou non gestion des
useEffect
ouuseMemo
(ou l'utilisation dePureComponent
), il se peut que récupérer des valeurs dCette problématique ouvre une autre concernant l'utilisation du PublicodeContext.... (l'ouverture d'une prochaine discussion sûrement),
Liens :
5. L'utilisation de Field
Voici l'example d'un composant qui utilise le HOC de react-final-form, ici nous voyons bien que c'est super orienté côté front. Je ne pense pas que ça soit du côté la limite se fait au niveau de la génération de l'error.
6. Le design du formulaire
Actuellement, notre utilisation du formulaire se fait à travers plusieurs étapes qui re-render des composants nouveaux (dont certains sont dynamiques en fonction des informations saisies)
La complexité se fait au niveau de l'exploitation et de la generation des states. On ne sait plus quel champs sont liées aux field utilisée par final-form.
Final-form est bien côté formulaire simple (formulaire de contact), or dans notre use-case où l'application est basée dessus, on trouve vite la limite....
Solution envisagé
Utiliser un state global, qui permet de diviser la responsabilité entre l'action géré par le state globale, et l'affichage visuelle des composants :
Beta Was this translation helpful? Give feedback.
All reactions