Reactアプリで状態管理とデータ保存をどうすればいいのか、よく混乱するポイントの一つに「ReduxとlocalStorageって何が違うの?」「どっちを使えばいいの?」という疑問があります。
本記事では、それぞれの役割と、実際の併用パターンについてわかりやすく解説します。
✅ 結論(先に言う)
Reduxは「アプリ実行中の状態管理」用(一時的)
localStorageは「ブラウザに永続保存」用(永続的)
よって、併用するのが実践的
→ Reduxで状態管理、localStorageで初期値の永続化
Reduxとは?
ReduxはJavaScriptアプリで使われる「状態管理ライブラリ」です。Reactと組み合わせることで、以下のような用途に使えます。
ログイン状態の共有
UIの表示状態(モーダルの開閉など)
フォームの入力内容の管理
ただし、Reduxの状態はメモリ上にあるだけなので、ページをリロードすると消えます。
localStorageとは?
localStorageは、ブラウザにデータを保存するためのAPIです。
特徴は以下の通り:
ブラウザを閉じてもデータが残る
保存できるのは文字列のみ(JSON.stringifyが必要)
認証トークン、テーマ設定、ユーザー名の保存などに使える
js
복사
편집
// 保存
localStorage.setItem("theme", "dark");
// 読み込み
const theme = localStorage.getItem("theme");
ReduxとlocalStorageの違いまとめ
特徴 Redux localStorage
保存場所 メモリ(RAM) ブラウザのディスク
永続性 なし(リロードで消える) あり(手動で削除しない限り保持)
データ形式 JavaScriptオブジェクト 文字列のみ(JSONが必要)
主な用途 状態管理(UI/ロジック用) 設定や認証情報の永続保存
セキュリティ 両方ともクライアント側なので、機密情報の保存は非推奨
実践:ReduxとlocalStorageの併用パターン
例えば、「ログイン状態をReduxで管理しつつ、リロードしても保持したい」という場合はこうします:
- 初期値をlocalStorageから取得
js
복사
편집
const persistedState = JSON.parse(localStorage.getItem("appState"));
const store = createStore(rootReducer, persistedState); - Reduxの状態が変わったら保存
js
복사
편집
store.subscribe(() => {
localStorage.setItem("appState", JSON.stringify(store.getState()));
});
こうすることで、
Reduxで状態管理
localStorageで永続保存
というベストな使い分けができます。
✍️ まとめ
ポイント 説明
Redux 状態管理ライブラリ(リロードで消える)
localStorage 永続的なデータ保存(UI状態管理は弱い)
ベストプラクティス Redux + localStorageの併用
参考リンク
Redux公式
MDN localStorage
Qiitaっぽくカスタマイズしたいポイント(タグや補足など)あれば教えてください!