このプロジェクトについて

ValtioはJavaScriptプロキシを基盤にした状態管理ライブラリで、Reactおよび純粋なバニラJavaScriptで使用できます。中心となる考え方はシンプルです。状態オブジェクトを`proxy()`でラップすると、コードのどこからでも通常のオブジェクトのように変更できる自己認識プロキシになります。 READMEに記載されている主な機能: - **プロキシ状態**: `proxy({ count: 0, text: 'hello' })`で変更可能な状態を作成し、`++state.count`のような変更が通常のオブジェクトと同様に機能します。 - **React統合**: `useSnapshot(state)`はレンダリング用のローカルスナップショットを返します。コンポーネントはアクセスした状態の部分が変化したときのみ再レンダリングされ、これはレンダー最適化と呼ばれています。`sync: true`オプションは制御された入力などのためにバッチ処理を無効にします。 - **購読**: `subscribe`は状態全体またはサブオブジェクトに対して機能し、`subscribeKey`はプリミティブ値を対象とします。`watch`ユーティリティは使用状況に基づいて自動的に購読します。 - **Suspenseサポート**: 状態に保持された非同期データを読み取るためのReact 19の`use`フックと互換性があり、親がフォールバックとエラーを処理します。 - **非追跡オブジェクト**: `ref`は大きなオブジェクトや特殊なオブジェクト(DOMノードなど)をプロキシ化せずに状態内に保持します。 - **バニラでの使用**: `valtio/vanilla`はReact外で使用するための`proxy`、`subscribe`、`snapshot`をエクスポートします。 - **ユーティリティ**: `useProxy`は初心者向けの簡略化された浅いプロキシを提供します。`proxySet`と`proxyMap`はネイティブのSetとMapの動作を模倣します。計算プロパティはオブジェクトのゲッターで定義できます。 - **開発ツール**: プレーンオブジェクトと配列に対するRedux DevTools Extensionとの統合。 - **互換性**: Valtio v2はReact 18以上を対象とし、依存は`react`のみで、react-dom、react-native、react-three-fiberなどのレンダラー、およびNode.jsとNext.jsで動作します。 READMEはまた、読み取り専用スナップショット型に関するTypeScriptの型付けの注意点、メソッドにおける`this`の動作に関する注意(アロー関数を推奨)、およびアクションの整理、状態の永続化、コンテキストの使用、状態の分割と合成のためのeslintプラグインとコミュニティレシピを紹介しています。