Reactなどのビューライブラリと併用できる、予測可能で保守しやすいグローバル状態管理のためのJavaScriptライブラリ。
immerjs/immer
現在の状態のドラフトを変更するだけで、不変な状態更新を書けるJavaScriptライブラリです。
- スター
- 28,988
- フォーク
- 901
- 未解決の Issue
- 46
- 最終コミット
- 昨日
これは何?
Immerを使うと、通常の変更操作を書く形で不変な状態を更新できます。現在の状態をドラフトプロキシとして変更すると、元の状態をそのまま保ちながら、新しい不変の状態ツリーを生成します。状態更新のたびに、ネストしたオブジェクトや配列を手作業でコピーする必要がなくなります。
Reduxのreducerをはじめ、不変な更新が必要な状態管理コードで広く使われています。APIの中心となるのは、ベースとなる状態とrecipe関数を受け取るproduce関数です。npmパッケージimmerとして公開されており、ドキュメントはプロジェクトのWebサイトで確認できます。
主な機能
- 01オブジェクトを手作業でコピーせず、ドラフトを変更して状態を更新できます。
- 02元の状態を変更せずに、新しい不変の状態を生成します。
- 03中核となるAPIは、ベースとなる状態とrecipeを受け取るproduce関数です。
- 04npmパッケージimmerとして公開されています。
ユースケース
- Reduxのreducerにおける不変な更新を簡潔にする。
- ReactなどのUIアプリケーションで、深くネストした状態を更新する。
- 不変なスナップショットを使ったUndo履歴や変更追跡が必要な状態ロジックを書く。
クイックスタート
- 1
インストール方法を確認するには、immerjs.github.io/immer のドキュメントを読んでください
- 2
コントリビュートするには、Gitpod でプロジェクトを開いてください。依存関係のインストールと yarn run start の実行が自動で行われます
トピック
よくある質問
- immer とは?
- 現在の状態のドラフトを変更するだけで、不変な状態更新を書けるJavaScriptライブラリです。 Immerを使うと、通常の変更操作を書く形で不変な状態を更新できます。現在の状態をドラフトプロキシとして変更すると、元の状態をそのまま保ちながら、新しい不変の状態ツリーを生成します。状態更新のたびに、ネストしたオブジェクトや配列を手作業でコピーする必要がなくなります。
- immer は無料で使えますか?ライセンスは?
- immer は MIT ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
- immer は今もメンテナンスされていますか?
- 活発にメンテナンス中。immer の最終コミットは 2026年10月21日 です。
- immer は何に使えますか?
- Reduxのreducerにおける不変な更新を簡潔にする。 ReactなどのUIアプリケーションで、深くネストした状態を更新する。 不変なスナップショットを使ったUndo履歴や変更追跡が必要な状態ロジックを書く。
- immer のインストール方法は?
- インストール方法を確認するには、immerjs.github.io/immer のドキュメントを読んでください コントリビュートするには、Gitpod でプロジェクトを開いてください。依存関係のインストールと yarn run start の実行が自動で行われます
- immer はどこで入手できますか?
- ソースコードとインストール手順は GitHub にあります:https://github.com/immerjs/immer
概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。
関連プロジェクト
Provider不要の、React向け小型フックベースの状態管理ライブラリ。
ReduxストアをhooksやProviderでReactコンポーネントに接続する、Redux公式のReactバインディングです。
ReduxなどのプレーンなJavaScriptのstateからデータを導出する、メモ化セレクター関数を作成するTypeScriptライブラリです。
アプリの起動時にストアの状態をストレージから復元する、Reduxのミドルウェア風ライブラリです。
React と React Native アプリの状態、ネットワークリクエスト、ログ、エラーを確認できるデスクトップデバッガー。