zustand-store-ts

Créez des stores Zustand avec TypeScript, le middleware `subscribeWithSelector`, et une séparation claire entre état et actions. À utiliser lors de la mise en place de la gestion d'état React, de la création de stores globaux, ou de l'implémentation de patterns d'état réactif avec Zustand.

npx skills add https://github.com/microsoft/skills --skill zustand-store-ts

Zustand Store

Créez des stores Zustand en suivant les patterns établis avec les types TypeScript appropriés et les middlewares.

Quick Start

Copiez le modèle depuis assets/template.ts et remplacez les placeholders :

  • {{StoreName}} → nom du store en PascalCase (ex. Project)
  • {{description}} → brève description pour JSDoc

Always Use subscribeWithSelector

import { create } from 'zustand';
import { subscribeWithSelector } from 'zustand/middleware';

export const useMyStore = create<MyStore>()(
  subscribeWithSelector((set, get) => ({
    // state and actions
  }))
);

Separate State and Actions

export interface MyState {
  items: Item[];
  isLoading: boolean;
}

export interface MyActions {
  addItem: (item: Item) => void;
  loadItems: () => Promise<void>;
}

export type MyStore = MyState & MyActions;

Use Individual Selectors

// Good - only re-renders when `items` changes
const items = useMyStore((state) => state.items);

// Avoid - re-renders on any state change
const { items, isLoading } = useMyStore();

Subscribe Outside React

useMyStore.subscribe(
  (state) => state.selectedId,
  (selectedId) => console.log('Selected:', selectedId)
);

Integration Steps

  1. Créez le store dans src/frontend/src/store/
  2. Exportez depuis src/frontend/src/store/index.ts
  3. Ajoutez des tests dans src/frontend/src/store/*.test.ts

Skills similaires