はじめに
Kerros は React Hook、Context による所有権、外部 Store の限定的な購読をつなぐ小さなライブラリです。
状態は通常の Hook として記述します。
Provider が Store の存在範囲 を決め、selector が コンポーネントの監視対象 を決めます。
解決する課題
React Context は所有権と依存性注入に適していますが、Context value の変更はすべての consumer を無効化します。モジュールレベルの外部 Store は限定的な購読を提供しますが、通常はグローバルで別の状態モデルを導入します。
Kerros は両方の境界を明示します。
Context は変化するスナップショットではなく、安定した購読コンテナだけを運びます。Store Hook はコミット済みスナップショットを公開し、各コンポーネントは selector の投影だけを購読します。
適している場面
- route、workspace、editor、session、機能サブツリーに属する状態
- Store 内で React Hook や SDK Hook を直接使いたい場合
- 巨大なグローバル再レンダー領域を作らずに限定的な購読が必要な場合
- Provider props で Store を初期化したい場合
- テストごとに Store を分離したい場合
Store 間の依存は必ず一方向にします。B が A を読む場合は A の Provider を外側に置き、A から B を読まないでください。