المهارات zustand-store-ts
📦

zustand-store-ts

آمن

بناء متاجر Zustand آمنة نوعياً لـ React

إدارة حالة React بأنواع TypeScript صحيحة وبرمجيات وسيطة معقدة. توفر هذه المهارة أنماطاً مثبتة لإنشاء متاجر Zustand قابلة للصيانة مع subscribeWithSelector وفصل واضح بين الحالة/الإجراءات.

يدعم: Claude Codex Code(CC)
🥉 75 برونزي
1

تنزيل ZIP المهارة

2

رفع في Claude

اذهب إلى Settings → Capabilities → Skills → Upload skill

3

فعّل وابدأ الاستخدام

اختبرها

استخدام "zustand-store-ts". Create a counter store with increment, decrement, and reset actions

النتيجة المتوقعة:

واجهة متجر TypeScript مع حالة count وثلاث طرق إجراءات، بالإضافة إلى تنفيذ create() مع برمجية subscribeWithSelector الوسيطة مغلفة حول تعريف المتجر.

استخدام "zustand-store-ts". How do I subscribe to only the userId change?

النتيجة المتوقعة:

استخدم store.subscribe((state) => state.userId, (id) => console.log(id)) لتلقي استدعاءات فقط عندما يتغير userId، وتجنب التنفيذ غير الضروري لتحديثات الحالة الأخرى.

التدقيق الأمني

آمن
v1 • 2/25/2026

Static analysis flagged 19 patterns (14 external_commands, 5 blocker/crypto), but all are false positives. The backticks detected are markdown code fence delimiters for TypeScript examples, not shell execution. The cryptographic warnings reference 'subscribeWithSelector' text patterns, not actual crypto algorithms. This is a documentation-only skill with code examples for Zustand state management.

1
الملفات التي تم فحصها
74
الأسطر التي تم تحليلها
0
النتائج
1
إجمالي عمليات التدقيق
لا توجد مشكلات أمنية
تم تدقيقه بواسطة: claude

درجة الجودة

38
الهندسة المعمارية
100
قابلية الصيانة
87
المحتوى
50
المجتمع
100
الأمان
100
الامتثال للمواصفات

ماذا يمكنك بناءه

مطور React يبني حالة عامة

إنشاء متجر Zustand جديد لإدارة الحالة على مستوى التطبيق مثل جلسات المستخدم أو السمات أو ميزات الرايات مع دعم كامل لـ TypeScript.

فريق يوحد أنماط الحالة

إنشاء أنماط متاجر متسقة عبر قاعدة الكود مع كتابة صحيحة واستخدام البرمجيات الوسيطة وأفضل ممارسات الاشتراك.

الانتقال من Redux إلى Zustand

تحويل متاجر Redux الحالية إلى متاجر Zustand خفيفة الوزن مع الحفاظ على أنواع TypeScript وتحسين إعادة التصيير.

جرّب هذه الموجهات

إنشاء متجر أساسي
Create a Zustand store template for a shopping cart with items array and total price calculation. Use TypeScript and include the subscribeWithSelector middleware.
متجر مع إجراءات غير متزامنة
Generate a user store with async login and logout actions. Include proper TypeScript interfaces for state and actions, with loading and error states.
متجر معقد مع محددات
Create a project management store with tasks, filters, and computed selectors. Show how to use individual selectors to prevent unnecessary re-renders.
اشتراك غير React
Show how to subscribe to store changes outside React components for logging or integration with external systems like analytics.

أفضل الممارسات

  • غلف المتاجر دائماً ببرمجية subscribeWithSelector الوسيطة للاشتراكات الدقيقة
  • عرّف واجهات منفصلة للحالة والإجراءات، ثم اجمعها لنوع المتجر
  • استخدم دوال المحدد في المكونات للاشتراك فقط في شرائح الحالة المطلوبة

تجنب

  • إلغاء هيكلة المتجر بالكامل في المكونات يسبب إعادة تصيير عند أي تغيير حالة
  • إنشاء متاجر بدون واجهات TypeScript يفقد فوائد أمان الأنواع
  • الاشتراك في كائن الحالة بالكامل عند الحاجة إلى خاصية واحدة فقط

الأسئلة المتكررة

لماذا أستخدم subscribeWithSelector بدلاً من البرمجية الوسيطة الافتراضية؟
subscribeWithSelector تمكن اشتراكات دقيقة تُطلق فقط عندما تتغير خصائص حالة محددة، مما يحسن الأداء بتجنب إعادة التصيير غير الضروري وتنفيذات الاستدعاء.
هل يجب إنشاء متجر واحد أم متاجر متعددة؟
ابدأ بمتاجر منفصلة للمجالات غير المرتبطة (مستخدم، سلة، إعدادات). اجمع الحالة المرتبطة في متجر واحد عندما تُحدث الإجراءات خصائص متعددة معاً بشكل متكرر.
كيف أتعامل مع الإجراءات غير المتزامنة في Zustand؟
عرّف دوال غير متزامنة في واجهة الإجراءات الخاصة بك. داخل التنفيذ، استخدم بنية async/await واستدعِ set() مع الحالة المحدثة بعد اكتمال العملية غير المتزامنة.
هل يمكنني استخدام متاجر Zustand خارج مكونات React؟
نعم، يمكن استيراد المتاجر واستخدامها في أي مكان. استخدم طريقة subscribe للاستماع للتغييرات في كود غير React، مثل الأدوات أو الخدمات أو تكاملات التحليلات.
ما الفرق بين get() والوصول المباشر للحالة؟
get() توفر حالة المتجر الحالية داخل الإجراءات دون الاشتراك في التحديثات. مفيدة للوصول إلى قيم حالة حديثة أثناء تنفيذ الإجراءات دون إثارة إعادة تصيير.
هل أحتاج لتنظيف الاشتراكات يدوياً؟
نعم، store.subscribe ترجع دالة إلغاء اشتراك. استدعِها عندما لم تعد هناك حاجة للاشتراك، مثل تنظيف useEffect أو عند تدمير مستمعي الخارج.

تفاصيل المطور

المؤلف

sickn33

الترخيص

MIT

مرجع

main

بنية الملفات

📄 SKILL.md