Durant ce DevFest j’ai assisté à la présentation de Mobx state tree par Fabien Juif et Delphine Millet de Zenika et je voulais partager cette découverte avec vous.
Contexte
React est une librairie JavaScript développée par Facebook, désormais sous licence MIT depuis un mois. Cette librairie utilise l’approche composant mais ce paradigme nécessite très rapidement l’utilisation d’un store afin de simplifier la communication entre les différents composant de notre application. Deux librairies se démarquent aujourd’hui pour implémenter l’ajout d’un store à une application React :
Redux
35000 stars sur GitHub
Utilisé par Twitter & Airbnb
Caractéristiques : store immutable, fonctionnel
Point positif : Facile à tester
Points négatifs : Verbeux, difficile à appréhender
MobX
11 500 stars sur GitHub
Utilisé par Jenkins & Amazon AWS
Caractéristiques : mutation => orienté objet, réactif
Points positifs : Facile à comprendre, moins verbeux, re-rendu optimisé
Points négatif : pas “rejouable” => plus difficile à tester
Mobx state tree
C’est ce point négatif de MobX qui a donné naissance à MobX state tree :
Première release en mars, version 1.0 le 20 septembre
1300 stars sur GitHub
Caractéristiques : cycle de Mobx mais avec recopie du state => basé sur des snapshot
Deux points positifs ont été mis en avant :
- Le typage du modèle, avec obligation de préciser si le paramètre est obligatoire, et sa valeur par défaut sinon.
- La fonction “onPatch” qui est appelée à chaque modification de changement d’état, très pratique pour le debug
L’utilisation de l’approche orientée objet est effectivement plus naturelle pour un développeur Java et MobX state tree semble très bien concilier ces deux visions opposées. Étant désormais en version stable, je pense que cette libraire est une option intéressante pour de futurs projets React.
J’en avais déjà entendu mais jamais je n’aurai pensé que cette apllicatioon est faite par facebook, une grande découverte. Et, je pense que Mobx state tree est une plus meilleure version que Mobx ou Redux.