0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ReduxとlocalStorageの違いとは?それぞれの役割と併用パターン

Posted at

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で管理しつつ、リロードしても保持したい」という場合はこうします:

  1. 初期値をlocalStorageから取得
    js
    복사
    편집
    const persistedState = JSON.parse(localStorage.getItem("appState"));
    const store = createStore(rootReducer, persistedState);
  2. Reduxの状態が変わったら保存
    js
    복사
    편집
    store.subscribe(() => {
    localStorage.setItem("appState", JSON.stringify(store.getState()));
    });
    こうすることで、

Reduxで状態管理

localStorageで永続保存

というベストな使い分けができます。

✍️ まとめ
ポイント 説明
Redux 状態管理ライブラリ(リロードで消える)
localStorage 永続的なデータ保存(UI状態管理は弱い)
ベストプラクティス Redux + localStorageの併用

参考リンク
Redux公式

MDN localStorage

Qiitaっぽくカスタマイズしたいポイント(タグや補足など)あれば教えてください!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?