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?

フロント側でフェッチしたapiがRAMに保存されていた話。

Posted at

💾 フロントエンドにおける「APIレスポンスはRAMに保存される」仕組みと活用

🧠 「RAMに保存される」とは?
フェッチで取得したデータ(例:fetch()やaxiosのレスポンス)はブラウザの実行中メモリ(=RAM)に一時的に格納される。

ページをリロードすると消える一時的な格納領域。

ReactのuseState、useEffect、状態管理ライブラリもこのRAMを使ってデータを保持している。

🧰 メモリ vs 他の保存方法の比較

方法 保存先 持続時間 用途
通常の変数/Reactのstate RAM(メモリ) ページが閉じるまで 一時的なUI状態やAPIレスポンス
React QueryやZustand RAM 設定次第 状態管理・キャッシュ
localStorage ディスク 無制限 永続データ(例:トークン)
sessionStorage ディスク タブが閉じるまで セッション中の保持
indexedDB ディスク 無制限 オフラインキャッシュ、大容量データ
🔄 React Query のRAM活用
APIデータの自動フェッチ・キャッシュ・再利用を行うライブラリ。

フェッチ結果はin-memory cache(RAM)に保持される。

パフォーマンス改善・再フェッチ抑制に有効。

const { data } = useQuery(['todos'], fetchTodos);

✅ 主なキャッシュ設定
staleTime: 「新鮮」と見なす時間(再フェッチを抑える)

cacheTime: アンマウント後もRAM上に保持しておく時間

🐻 Zustand のRAM活用
軽量な状態管理ライブラリで、グローバルにデータを保持可能。

作成したストアの内容はRAM上に保持され、Reactコンポーネント間で共有される。

const useStore = create((set) => ({
  user: null,
  setUser: (user) => set({ user }),
}));

再レンダリングや再取得を抑えたいユーザー状態の管理に最適。

ページリロードで消えるが、中間状態の保持には非常に強力。

🧩 React Query × Zustand の併用戦略(Laravel API想定)
用途 ライブラリ 備考
APIからデータ取得&キャッシュ React Query Laravel APIとの接続に最適
ログインユーザーやUI状態の保存 Zustand 複数ページ間で共通状態管理
ページ跨ぎの再利用性 両者併用 データの永続・非永続を柔軟に切り替え可能
📌 開発者として意識すべきこと
RAMは速いが一時的。永続的なデータはlocalStorageなどに保存。

状態保持ライブラリの「RAM活用」の仕組みを理解しておくと、UXやパフォーマンスの設計で有利。

Laravel × Next.jsの組み合わせでは、両ライブラリの役割分担が特に重要。

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?