مميز

Zustand (Store)

نمط بناء الـ Store في Zustand (Store Pattern)

(4/5)
👁️ 3 مشاهدة
📅 02 Jul 2026
⚛️ React 💚 Vue.js 🅰️ Angular 🧡 Svelte 🌐 عام

مستوى الخبرة المطلوب:

⚡ متوسط 🚀 محترف 🏢 مؤسسي
🔗 زيارة الموقع الرسمي
4
تقييم المستخدمين
التصنيف ⚡ JavaScript
المشاهدات 3
تاريخ الإضافة 02/07/2026
آخر تحديث 02/07/2026

📖 الوصف

Zustand Store هو نمط تنظيم الـ state في Zustand بطريقة مقسمة إلى slices (أقسام) لكل مجال من مجالات التطبيق. هذا النمط يُسهل تنظيم الكود في تطبيقات كبيرة من خلال فصل الـ state إلى stores مستقلة لكل feature أو domain. هذا الملف يغطي أفضل الممارسات في تنظيم الـ stores، استخدام middleware، و slice patt...

🎯 يستخدم في

مجالات استخدام هذه الأداة

تنظيم state في تطبيقات كبيرة

فصل الـ state حسب المجالات (user store

cart store

ui store)

بناء reusable state logic

State persistence مع middleware

TypeScript integration في stores

المميزات

أبرز مميزات هذه الأداة

تنظيم الكود بشكل أفضل في المشاريع الكبيرة

فصل الـ dependencies بين أجزاء(state) المختلفة

دعم middleware مثل persist و immer

TypeScript-friendly مع inference ممتاز

slice pattern لـ scalability

⚠️ العيوب

نقاط يجب مراعاتها

×

يحتاج خبرة في تنظيم الكود لتطبيقه بشكل صحيح

×

قد يصبح معقداً في البداية للمشاريع الصغيرة

×

يحتاج تخطيط مسبق للبنية

🔄 البدائل

أدوات بديلة يمكنك استخدامها

Redux Toolkit slices
MobX stores
Context API pattern

💻 مثال على الاستخدام

كيفية استخدام هذه الأداة

Example Code
import create from 'zustand';
import { persist } from 'zustand/middleware';

// User Store Slice
export const useUserStore = create(
  persist(
    (set, get) => ({
      user: null,
      isAuthenticated: false,
      login: async (credentials) => {
        const user = await api.login(credentials);
        set({ user, isAuthenticated: true });
      },
      logout: () => set({ user: null, isAuthenticated: false }),
    }),
    { name: 'user-storage' }
  )
);

// Cart Store Slice
export const useCartStore = create((set) => ({
  items: [],
  addToCart: (product) => set((state) => ({
    items: [...state.items, product]
  })),
  clearCart: () => set({ items: [] }),
  total: () => get().items.reduce((sum, item) => sum + item.price, 0),
}));

📚 أدوات أخرى في JavaScript

قد يعجبك أيضاً