Dans cet article, j'aimerais partager l'histoire derrière le développement de Zustand. Pour être précis, je n'étais pas l'auteur original de Zustand, et lorsque Zustand v0 est né, je développais d'autres bibliothèques d'état globales, notamment React-Tracked. D'ailleurs, je me considère désormais comme un auteur (secondaire) de Zustand.
J'ai trouvé mon tweet mentionnant Zustand, en le comparant avec d'autres bibliothèques, dont la mienne.
Ma conviction à ce moment-là était que l'état global devait être transmis via React Context afin qu'il fonctionne avec React Concurrent Mode. J'ai donc réalisé un tableau comparatif pour différencier ma bibliothèque des autres, et Zustand en faisait partie. C'était en 2019.
En 2020, j'intègre le groupe Poimandres et prends en charge le développement de Zustand. Mon intérêt à l'époque était de faire fonctionner les bibliothèques d'état globales avec React Concurrent Mode. Il n'était pas possible de tirer pleinement parti du mode simultané, mais il existait une API expérimentale appelée useMutableSource pour rendre l'état global compatible avec le mode simultané.
J'expérimentais beaucoup de choses en utilisant une solution basée sur React Context avec React-Tracked et je me demandais ce que nous pouvions faire avec l'état global sans React Context. Zustand avait un an, mais personne ne l'entretenait. J'ai donc décidé de le reprendre.
L'API expérimentale useMutableSource n'était pas prête, la première tâche consistait donc à mettre à jour diverses choses et à corriger quelques bugs. C'est à ce moment-là que Zustand v3 est né. J'espérais publier bientôt la v4 avec useMutableSource, mais cela ne s'est pas produit. Il y a une autre histoire derrière ça.
De nos jours, c'est un modèle bien connu d'avoir l'état global à l'extérieur et d'utiliser éventuellement React Context pour transmettre son magasin. Zustand a été un pionnier dans ce domaine. Les gens étaient très sceptiques quant à l'absence d'état global dans React Context, et nous avons eu du mal à expliquer que c'est un modèle valide.
L'une des choses qui me tiennent à cœur avec Zustand est sa mise en œuvre simple et sa petite taille de bundle. Si vous regardez le code source, vous verrez qu'il ne s'agit que d'une simple utilisation de hooks React avec une implémentation minimale du magasin.
Au moment de la rédaction, Zustand v4 est la dernière version, qui dispose d'un support TypeScript très avancé, et le code est presque entièrement réécrit à partir de la v3. Nous avons Zustand v5 presque prêt pour la prochaine version.
Enfin, plusieurs contributeurs maintiennent ce projet. Je ne m'attendais pas à ce que cela se produise lorsque j'ai repris le projet. J'en suis très reconnaissant. Merci à tous. <script> // Detect dark theme var iframe = document.getElementById('tweet-1141004414129324032-562'); if (document.body.className.includes('dark-theme')) { iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1141004414129324032&theme=dark" } </script>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!