react zustand

React向けの非常にシンプルで軽量な状態管理ライブラリです。

Reduxのように複雑な設定が必要なく、「ただのJavaScriptオブジェクトを作る感覚」で扱えます

状態管理ライブラリの分類

クライアント状態 ← → サーバー状態(API)
クライアント × グローバル
Zustand Jotai Redux Context API
例: テーマ、モーダル状態、カート
サーバー × グローバル
React Query SWR Apollo Client
例: ユーザー情報、商品一覧、投稿データ
クライアント × ローカル
useState useReducer
例: フォーム入力、開閉状態、カウンター
サーバー × ローカル
fetch + useState useEffect内でAPI
例: 単発のAPI呼び出し(キャッシュ不要)
↑ グローバル ローカル ↓
選び方の指針
  • • APIから取得するデータ → React Query / SWR
  • • 複数コンポーネントで共有するUI状態 → Zustand / Jotai
  • • 単一コンポーネント内の状態 → useState
目次

createで作成したものが「ストア」

ストア、グローバルステートとは

そもそもストアとはグローバルステートを保存するためのオブジェクトや仕組みになります

グローバルステートとは、useStateで管理するような特定のコンポーネント内でのみではなく、アプリのどこからでもアクセスできるデータ

createは、storeを作成して、そのstoreにアクセスするためのフックを返します。

storeの初期状態と更新関数を定義したオブジェクトを記述します

簡単なサンプル

import { create } from 'zustand';

const useStore = create((set) => ({
  // 状態(State)
  count: 0,

  // 更新関数(Action)
  inc: () => set((state) => ({ count: state.count + 1 })),
}));
目次