Reactなどのビューライブラリと併用できる、予測可能で保守しやすいグローバル状態管理のためのJavaScriptライブラリ。
reduxjs/reselect
ReduxなどのプレーンなJavaScriptのstateからデータを導出する、メモ化セレクター関数を作成するTypeScriptライブラリです。
- スター
- 19,005
- フォーク
- 666
- 未解決の Issue
- 38
- 最終コミット
- 昨日
これは何?
Reselectは、メモ化された「セレクター」関数を作成するcreateSelectorを提供します。stateから値を取り出す1つ以上の入力セレクターと、それらの値から導出値を計算する結果関数を渡します。出力セレクターは、取り出した値が変化した場合にのみ再計算され、何も変わっていなければ同じ参照を返します。
これにより、Reduxには最小限のstateだけを保持し、導出データは必要に応じて計算できます。セレクターは合成することもでき、あるセレクターの出力を別のセレクターの入力として使えます。ReselectはRedux Toolkitに含まれているほか、reselectパッケージとして単独でインストールすることもできます。
このライブラリには、動作をカスタマイズするweakMapMemoize、lruMemoize、createSelectorCreatorなどのメモ化オプションに加え、入力の安定性やidentity関数を検証する開発時専用のチェック機能があります。
主な機能
- 01入力が変わっていない場合に再計算を省く、メモ化セレクターを作成します。
- 02ほかのセレクターを入力として使い、セレクターを合成できます。
- 03結果の参照を安定させることで、React-ReduxやReactで不要な再レンダリングを抑えます。
- 04セレクターのオブジェクトからセレクターを構築するcreateStructuredSelectorを提供します。
- 05createSelectorCreator、lruMemoize、weakMapMemoizeを使ったカスタムメモ化に対応しています。
- 06不安定な入力セレクターやidentity関数である結果関数を検出する、開発時専用のチェック機能を備えています。
ユースケース
- Redux stateからフィルタリングや集計を行ったデータを導出し、重複して保存せずに利用する。
- 不要な再レンダリングを避けながら、React-Reduxを通じてReactコンポーネントにpropsを渡す。
- 小さなstateクエリを合成し、より大きな導出ビューを作る階層型セレクターを構築する。
- Redux以外のプレーンなJavaScriptのイミュータブルデータにも、メモ化した導出stateを適用する。
クイックスタート
- 1
npmでスタンドアロンパッケージをインストールします
npm install reselect - 2
または、Reselectがすでに含まれているRedux Toolkitを使用します(追加のインストールは不要です)
トピック
よくある質問
- reselect とは?
- ReduxなどのプレーンなJavaScriptのstateからデータを導出する、メモ化セレクター関数を作成するTypeScriptライブラリです。 Reselectは、メモ化された「セレクター」関数を作成するcreateSelectorを提供します。stateから値を取り出す1つ以上の入力セレクターと、それらの値から導出値を計算する結果関数を渡します。出力セレクターは、取り出した値が変化した場合にのみ再計算され、何も変わっていなければ同じ参照を返します。
- reselect は無料で使えますか?ライセンスは?
- reselect は MIT ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
- reselect は今もメンテナンスされていますか?
- 活発にメンテナンス中。reselect の最終コミットは 2026年10月21日 です。
- reselect は何に使えますか?
- Redux stateからフィルタリングや集計を行ったデータを導出し、重複して保存せずに利用する。 不要な再レンダリングを避けながら、React-Reduxを通じてReactコンポーネントにpropsを渡す。 小さなstateクエリを合成し、より大きな導出ビューを作る階層型セレクターを構築する。 Redux以外のプレーンなJavaScriptのイミュータブルデータにも、メモ化した導出stateを適用する。
- reselect のインストール方法は?
- npmでスタンドアロンパッケージをインストールします: npm install reselect または、Reselectがすでに含まれているRedux Toolkitを使用します(追加のインストールは不要です)
- reselect はどこで入手できますか?
- ソースコードとインストール手順は GitHub にあります:https://github.com/reduxjs/reselect
概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。
関連プロジェクト
Provider不要の、React向け小型フックベースの状態管理ライブラリ。
ReduxストアをhooksやProviderでReactコンポーネントに接続する、Redux公式のReactバインディングです。
React、Vue、Svelte、Solid向けのバインディングを備えた、Webアプリ用の非同期状態管理・データ取得ライブラリ。
現在の状態のドラフトを変更するだけで、不変な状態更新を書けるJavaScriptライブラリです。
アプリの起動時にストアの状態をストレージから復元する、Reduxのミドルウェア風ライブラリです。