mcpField
Z
zustand

zustand

github.com/marcioaltoe開発060 回インストール1 日前に更新
リポジトリ

zustand について

zustand は React 開発者向けの軽量な状態管理スキルです。Store の作成、TypeScript のパターン、ミドルウェア、Next.js などでの実践方法を扱います。

主な機能

  1. 01Provider 不要のフックベース Store
  2. 02TypeScript での Store 作成パターン
  3. 03セレクターと浅い比較
  4. 04永続化や更新のミドルウェア
  5. 05大規模 Store のスライス構成

活用シーン

  1. 01基本的な React Store の構築
  2. 02状態の localStorage への永続化
  3. 03React でのバニラ Store の利用
  4. 04Next.js での Store 構成

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/marcioaltoe/skills --skill zustand

インストール後、Claude Code で/zustandを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

agents/
openai.yaml
references/
apis.md
middlewares.md
patterns.md
typescript.md

詳細

Zustand

React 向けの軽量な状態管理です。プロバイダーも定型コードも不要です。ストアはフックです。

クイックスタート

import { create } from "zustand"

interface BearState {
  bears: number
  increase: (by: number) => void
}

const useBearStore = create<BearState>()((set) => ({
  bears: 0,
  increase: (by) => set((state) => ({ bears: state.bears + by })),
}))

// In components — select only what you need
const bears = useBearStore((state) => state.bears)

重要なルール

  1. TypeScript: 型推論に必要なため、カリー化形式の create<T>()(...) を使用します
  2. 不変性: 状態は不変として扱います。set が浅くマージするのは 1 階層のみです
  3. セレクター: ストア全体ではなく、特定のフィールドを常に選択します。新しい参照を返す複数フィールドのセレクターには useShallow を使用します
  4. ミドルウェアの順序: devtools を最も外側に配置する必要があります:devtools(persist(immer(...)))
  5. Next.js: グローバルな create ではなく、createStore と Context を使ってリクエストごとにストアを作成します
  6. ネストされた更新: 深いネストには Immer を、浅いネストにはスプレッド演算子を使用します

用途に応じた選択

必要なもの解決策
基本的な React ストアcreate<T>()(...)
Vanilla(React 以外)のストアzustand/vanilla の createStore
React で Vanilla ストアを使用するuseStore(store, selector)
型を自動推論する(インターフェースなし)combine ミドルウェア
localStorage に永続化するpersist ミドルウェア
Redux DevToolsdevtools ミドルウェア
可変スタイルの更新immer ミドルウェア
スライスを外部から購読するsubscribeWithSelector ミドルウェア
再レンダリングせずに複数のフィールドを取得するuseShallow ラッパー
大規模なストアをモジュール化するStateCreator を使ったスライスパターン
Next.js App RoutercreateStore + Context + Provider
ストアをリセットするset(initialState) または store.getInitialState()

参考資料

  • API リファレンス(create、createStore、フック、shallow):references/apis.md を参照
  • TypeScript のパターン(カリー化された create、スライス、ミドルウェアの型付け、カスタムミドルウェア):references/typescript.md を参照
  • ミドルウェア(persist、devtools、immer、redux、combine、subscribeWithSelector):references/middlewares.md を参照
  • パターンとベストプラクティス(Next.js、テスト、リセット、自動セレクター、SSR、深い階層の更新):references/patterns.md を参照

コメント