在这篇文章中,我想分享 Zustand 的发展背后的故事。准确地说,我不是 Zustand 的原作者,当 Zustand v0 诞生时,我正在开发其他全局状态库,尤其是 React-Tracked。顺便说一句,我现在认为自己是 Zustand 的(第二)作者。
我发现我的推文提到了 Zustand,并将其与其他库(包括我的库)进行了比较。
当时我的信念是全局状态应该通过 React Context 传递,以便它可以与 React 并发模式一起工作。因此,我制作了一个比较表来区分我的图书馆和其他图书馆,Zustand 就是其中之一。这是2019年的事情。
2020年,我加入了Poimandres团队并接管了Zustand的开发。当时我的兴趣是让全局状态库与 React 并发模式一起工作。不可能从并发模式中获得全部好处,但是有一个名为 useMutableSource 的实验性 API 可以使全局状态与并发模式兼容。
我正在尝试使用基于 React Context 的解决方案和 React-Tracked 进行许多事情,并且想知道在没有 React Context 的情况下我们可以用全局状态做什么。 Zustand 已有一年了,但没有人维护它。所以我决定接手。
实验性的 useMutableSource API 还没有准备好,所以第一个任务是更新各种内容并修复一些错误。这就是 Zustand v3 诞生的时候。我的希望是很快发布带有 useMutableSource 的 v4,但它没有发生。这背后还有一个故事。
如今,将全局状态置于外部并可选择使用 React Context 来传递其存储是一种众所周知的模式。 Zustand 是这种模式的先驱。人们对 React Context 中没有全局状态非常怀疑,我们很难解释这是一个有效的模式。
我对 Zustand 关心的事情之一是它的简单实现和它的小包大小。如果你查看源代码,你会发现它只不过是使用 React hooks 和最小的 store 实现。
截至撰写本文时,Zustand v4 是最新版本,它具有非常先进的 TypeScript 支持,并且代码几乎完全从 v3 重写。我们的 Zustand v5 已经准备好迎接下一个版本了。
最后但并非最不重要的一点是,有几个贡献者维护这个项目。我接手这个项目的时候没想到会发生这样的事情。我对此非常感激。谢谢大家。 <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>
以上是Zustand是如何诞生的的详细内容。更多信息请关注PHP中文网其他相关文章!