その時点での私の信念は、React Concurrent Mode で動作するように、グローバル状態は React Context 経由で渡されるべきだということでした。そこで、自分のライブラリと他のライブラリを区別するために比較表を作成しました。Zustand もその 1 つでした。これは 2019 年のことでした。
2020 年に私は Poimandres グループに加わり、Zustand の開発を引き継ぎました。当時の私の興味は、グローバル ステート ライブラリを React Concurrent Mode で動作させることでした。同時モードの利点を最大限に活用することはできませんでしたが、グローバル状態を同時モードと互換性のあるものにするための useMutableSource という実験的な API がありました。
私は React-Tracked を使用した React Context ベースのソリューションを使用してさまざまなことを実験していましたが、React Context を使用せずにグローバル状態で何ができるか疑問に思いました。 Zustand は設立 1 年でしたが、誰もメンテナンスしていませんでした。そこで、引き継ぐことにしました。
実験用の MutableSource API の準備が整っていなかったので、最初のタスクはさまざまなものを更新し、いくつかのバグを修正することでした。 Zustand v3 が誕生したのはこの時でした。私の希望はすぐに useMutableSource を備えた v4 をリリースすることでしたが、それは実現しませんでした。それには別の物語があります。
現在では、グローバル状態を外部に持ち、必要に応じて React Context を使用してそのストアを渡すというのがよく知られたパターンです。 Zustand はこのパターンの先駆者でした。 React Context にグローバル状態がないことについて人々は非常に懐疑的で、私たちはそれが有効なパターンであることを説明するのに苦労しました。
Zustand で私が気にかけている点の 1 つは、実装がシンプルでバンドル サイズが小さいことです。ソース コードを見ると、最小限のストア実装で React フックを使用しているだけであることがわかります。
執筆時点では、Zustand v4 が最新バージョンで、非常に高度な TypeScript サポートを備えており、コードはほぼ完全に v3 から書き直されています。 Zustand v5 は次のリリースに向けてほぼ準備が整っています。
最後になりましたが、このプロジェクトを維持している貢献者が何人かいます。私がプロジェクトを引き継いだときは、こんなことになるとは予想していませんでした。とても感謝しています。みんな、ありがとう。
","image":"http://www.luping.net/uploads/20240730/172233792466a8ca84b1d78.jpg","datePublished":"2024-07-30T19:12:03+08:00","dateModified":"2024-07-30T19:12:03+08:00","author":{"@type":"Person","name":"luping.net","url":"https://www.luping.net/articlelist/0_1.html"}}今回は、Zustandの開発秘話をシェアしたいと思います。正確に言うと、私は Zustand のオリジナルの作者ではなく、Zustand v0 が生まれたとき、他のグローバル ステート ライブラリ、特に React-Tracked を開発していました。ちなみに、私は今、自分を Zustand の(二次)作者だと思っています。
私のツイートで Zustand について言及し、私を含む他のライブラリと比較しているのを見つけました。
その時点での私の信念は、React Concurrent Mode で動作するように、グローバル状態は React Context 経由で渡されるべきだということでした。そこで、自分のライブラリと他のライブラリを区別するために比較表を作成しました。Zustand もその 1 つでした。これは 2019 年のことでした。
2020 年に私は Poimandres グループに加わり、Zustand の開発を引き継ぎました。当時の私の興味は、グローバル ステート ライブラリを React Concurrent Mode で動作させることでした。同時モードの利点を最大限に活用することはできませんでしたが、グローバル状態を同時モードと互換性のあるものにするための useMutableSource という実験的な API がありました。
私は React-Tracked を使用した React Context ベースのソリューションを使用してさまざまなことを実験していましたが、React Context を使用せずにグローバル状態で何ができるか疑問に思いました。 Zustand は設立 1 年でしたが、誰もメンテナンスしていませんでした。そこで、引き継ぐことにしました。
実験用の MutableSource API の準備が整っていなかったので、最初のタスクはさまざまなものを更新し、いくつかのバグを修正することでした。 Zustand v3 が誕生したのはこの時でした。私の希望はすぐに useMutableSource を備えた v4 をリリースすることでしたが、それは実現しませんでした。それには別の物語があります。
現在では、グローバル状態を外部に持ち、必要に応じて React Context を使用してそのストアを渡すというのがよく知られたパターンです。 Zustand はこのパターンの先駆者でした。 React Context にグローバル状態がないことについて人々は非常に懐疑的で、私たちはそれが有効なパターンであることを説明するのに苦労しました。
Zustand で私が気にかけている点の 1 つは、実装がシンプルでバンドル サイズが小さいことです。ソース コードを見ると、最小限のストア実装で React フックを使用しているだけであることがわかります。
執筆時点では、Zustand v4 が最新バージョンで、非常に高度な TypeScript サポートを備えており、コードはほぼ完全に v3 から書き直されています。 Zustand v5 は次のリリースに向けてほぼ準備が整っています。
最後になりましたが、このプロジェクトを維持している貢献者が何人かいます。私がプロジェクトを引き継いだときは、こんなことになるとは予想していませんでした。とても感謝しています。みんな、ありがとう。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3