スキル react-zustand-patterns
⚛️

react-zustand-patterns

安全 🌐 ネットワークアクセス⚙️ 外部コマンド

Appliquer des modèles de gestion d’état avec Zustand

La simplicité de Zustand masque des complexités de timing qui provoquent des bugs subtils. Apprenez des modèles pour le comportement synchrone de set(), la prévention des closures obsolètes, les actions asynchrones et l’optimisation des sélecteurs afin d’écrire une gestion d’état React fiable.

対応: Claude Codex Code(CC)
📊 70 十分
1

スキルZIPをダウンロード

2

Claudeでアップロード

設定 → 機能 → スキル → スキルをアップロードへ移動

3

オンにして利用開始

テストする

「react-zustand-patterns」を使用しています。 Explain why set() is synchronous but my component still shows old values after calling it

期待される結果:

  • set() met à jour le store Zustand immédiatement et de manière synchrone
  • getState() affichera la nouvelle valeur juste après set()
  • Cependant, les composants React ne se re-rendent qu’au prochain cycle de mise à jour batché
  • La fonction du composant se réexécute avec d’anciens props/états jusqu’à ce que React traite le batch
  • Utilise useStore.getState() directement si tu as besoin d’un accès immédiat en dehors des rendus de composants

「react-zustand-patterns」を使用しています。 How do I properly handle async data fetching in my Zustand store

期待される結果:

  • Utilise le mot-clé async sur la fonction d’action
  • Mets l’état de chargement à true avant le fetch
  • Lis l’état après await avec get() pour garantir des valeurs à jour
  • Gère les erreurs avec try/catch et définis l’état d’erreur
  • Retourne la promesse pour que les appelants puissent attendre la fin

「react-zustand-patterns」を使用しています。 Why is my React component re-rendering too often with Zustand

期待される結果:

  • Vérifie si ton sélecteur renvoie une nouvelle référence d’objet à chaque fois
  • Utilise une comparaison superficielle avec zustand/shallow ou le hook useShallow
  • Sépare en plusieurs sélecteurs qui renvoient des valeurs primitives
  • Mémorise les valeurs dérivées en dehors du sélecteur si c’est coûteux

セキュリティ監査

安全
v4 • 1/16/2026

Pure documentation skill containing educational content about Zustand state management patterns. All 52 static findings are false positives: markdown code block delimiters were misidentified as shell command execution, TypeScript syntax patterns as cryptographic algorithms, and feature documentation as executable code. No executable code, network calls, file system access, or credential handling exists.

2
スキャンされたファイル
535
解析された行数
2
検出結果
4
総監査数
監査者: claude 監査履歴を表示 →

品質スコア

38
アーキテクチャ
100
保守性
87
コンテンツ
22
コミュニティ
100
セキュリティ
91
仕様準拠

作れるもの

Corriger les bugs de timing d’état

Déboguer pourquoi les composants voient des valeurs obsolètes après des appels à set() à cause du comportement de rendu batché de React

Créer des actions de store asynchrones

Mettre en œuvre un chargement de données async robuste avec états de chargement, gestion des erreurs et prévention des conditions de course

Optimiser les performances de rendu

Éviter les re-renders inutiles en corrigeant des sélecteurs qui renvoient de nouveaux objets à chaque cycle de rendu

これらのプロンプトを試す

Comprendre set()
Explique comment set() fonctionne de manière synchrone mais que les re-renders React sont batchés. Montre pourquoi getState() renvoie immédiatement les nouvelles valeurs mais que les composants peuvent voir d’anciennes valeurs
Closures obsolètes
Comment éviter les closures obsolètes dans Zustand ? Montre pourquoi les données capturées dans un callback deviennent obsolètes après await et comment utiliser get() correctement
Actions asynchrones
Écris un modèle complet d’action async dans Zustand avec état de chargement, gestion des erreurs et protection contre les conditions de course en utilisant des vérifications get()
Optimisation des sélecteurs
Corrige ce sélecteur qui provoque des re-renders inutiles : const data = useStore((s) => ({ name: s.name, count: s.count }))

ベストプラクティス

  • Utilise toujours get() ou getState() après tout await pour garantir des valeurs d’état à jour
  • Utilise une comparaison superficielle ou plusieurs sélecteurs pour éviter la création d’objets dans les sélecteurs
  • Ajoute le middleware devtools pendant le développement pour tracer les changements d’état

回避

  • Se fier aux valeurs capturées par une closure après des opérations async sans utiliser get()
  • Renvoyer de nouveaux objets depuis des sélecteurs, ce qui provoque des re-renders inutiles des composants
  • Omettre le mot-clé async sur les actions de store qui renvoient des promesses

よくある質問

Zustand est-il compatible avec React Native ?
Oui. Zustand fonctionne de manière identique dans React Native. Utilise le middleware persist avec asyncStorage pour la persistance mobile.
Quelles versions de Zustand sont prises en charge ?
Les modèles couvrent Zustand 4.x et 5.x. Les différences clés incluent l’emplacement d’import de shallow et le hook useShallow.
Comment déboguer les changements d’état en production ?
Supprime le middleware devtools dans les builds de production. Utilise un logging manuel avec get() pour le débogage en production si nécessaire.
Mes données sont-elles en sécurité avec le middleware persist ?
Le middleware persist stocke les données dans localStorage ou AsyncStorage. Évite de persister des données sensibles sans chiffrement.
Pourquoi mes sélecteurs provoquent-ils des re-renders infinis ?
Les sélecteurs qui renvoient de nouveaux objets (comme { ...state }) changent de référence à chaque rendu. Utilise une comparaison superficielle ou plusieurs sélecteurs.
Comment Zustand se compare-t-il à Redux ?
Zustand est plus simple avec moins de boilerplate. Redux offre plus de middleware et d’outils de débogage. Les deux gèrent l’async avec des modèles de middleware.

開発者の詳細

ファイル構成

📄 SKILL.md