0Pricing
React Academy · درس

إنشاء أول متجر Zustand لك

عرّف متجرًا باستخدام create()، وأضف شرائح الحالة والإجراءات، واستهلكه باستخدام useStore.

إنشاء أول متجر Zustand لك درس مجاني في React Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في React Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة React Academy 4 دروس في المجموع.

مرحبًا

في هذا الدرس، ستنشئ أول مخزن Zustand باستخدام create()، وتعرّف شرائح الحالة والإجراءات، وتستخدم المخزن في مكوّنات React

ما هو Zustand؟

Zustand مكتبة بسيطة وغير متحيزة لإدارة الحالة. المخزن عبارة عن كائن JavaScript عادي يحتوي على الحالة والدوال. تشترك المكوّنات فيه عبر خطاف. ولا تحتاج إلى موفّرات أو مخفّضات أو تعليمات برمجية نمطية

التثبيت

ثبّت Zustand. فهي لا تحتوي على أي تبعيات نظيرة
npm install zustand

إنشاء مخزن

استدعِ create() مع دالة تُرجع الحالة الأولية والإجراءات. وتتلقى الدالة مساعد `set` لتحديث الحالة
import { create } from 'zustand';

const useCounterStore = create((set) => ({
  count: 0,
  increment: () => set(state => ({ count: state.count + 1 })),
  decrement: () => set(state => ({ count: state.count - 1 })),
  reset: () => set({ count: 0 }),
}));

استخدام المخزن في مكوّن

استدعِ خطاف المخزن في أي مكوّن للوصول إلى الحالة والإجراءات. ولا حاجة إلى تغليف المكوّن بموفّر Provider
function Counter() {
  const count = useCounterStore(state => state.count);
  const increment = useCounterStore(state => state.increment);
  return (
    <>
      <p>{count}</p>
      <button onClick={increment}>+1</button>
    </>
  );
}

صيغة selector

مرّر دالة selector إلى خطاف المخزن للاشتراك في شريحة الحالة التي تحتاج إليها فقط. ولن يُعاد تصيير المكوّن إلا عند تغيّر القيمة المحددة
const count = useCounterStore(s => s.count);
const reset = useCounterStore(s => s.reset);
// Only re-renders when count changes, not the whole store

تحديث الحالة باستخدام set

تدمج الدالة `set` القيم الجديدة في المخزن بطريقة سطحية. ويمكنك تمرير كائن أو دالة تتلقى الحالة الحالية وتُرجع تحديثات جزئية
set({ count: 0 }) // direct set
set(state => ({ count: state.count + 1 })) // functional update

الإجراءات غير المتزامنة

يمكن أن تكون الإجراءات غير متزامنة. استدعِ set بعد انتظار البيانات. ولا حاجة إلى برمجية وسيطة، فما عليك سوى كتابة دوال غير متزامنة عادية
const useUserStore = create((set) => ({
  user: null,
  fetchUser: async (id) => {
    const data = await fetch('/api/user/' + id).then(r => r.json());
    set({ user: data });
  },
}));

تحديثات الحالة المتداخلة

بالنسبة إلى الكائنات المتداخلة، انشر المستوى الخارجي يدويًا أو استخدم البرمجية الوسيطة immer لإجراء تعديلات عميقة. وبشكل افتراضي، تدمج set المفاتيح الموجودة في المستوى الأعلى فقط
set(state => ({
  user: { ...state.user, name: 'Alice' }
}));

قراءة المخزن خارج React

يمكنك الوصول إلى حالة المخزن خارج المكوّن باستخدام getState()، والاشتراك في التغييرات باستخدام subscribe(). وهذا مفيد للاختبارات وللتعليمات البرمجية غير التابعة إلى React
const count = useCounterStore.getState().count;
useCounterStore.subscribe(state => console.log(state.count));

تحقق سريع

ما وظيفة set في مخزن Zustand؟

مراجعة

أنشئ مخزن Zustand باستخدام create((set) => ({ state, actions })). استخدم صيغة selector في المكوّنات للاشتراك في الشرائح. تستدعي الإجراءات set() لتحديث الحالة. ويعمل ذلك بشكل غير متزامن وخارج React باستخدام getState()

التالي

الدرس التالي: **Selectors ومنع عمليات إعادة التصيير غير الضرورية** — ستستخرج شرائح محددة من الحالة بحيث لا يُعاد تصيير المكوّنات إلا عند الحاجة

الأسئلة الشائعة

هل درس «إنشاء أول متجر Zustand لك» مجاني؟

نعم — نص درس «إنشاء أول متجر Zustand لك» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة React Academy، انتقل إلى CoddyKit PRO. تتضمن دورة React Academy 4 دروس في المجموع.

ماذا ستتعلم في «إنشاء أول متجر Zustand لك»؟

عرّف متجرًا باستخدام create()، وأضف شرائح الحالة والإجراءات، واستهلكه باستخدام useStore. تتمرن على React Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ React Academy؟

لا تُشترط خبرة سابقة. React Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «إنشاء أول متجر Zustand لك»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس React Academy هذا؟

نعم. كل درس في React Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. إنشاء أول متجر Zustand لك
  2. المحددات ومنع إعادة التصيير غير الضرورية
  3. استمرارية الحالة باستخدام Persist Middleware
  4. أدوات Zustand للمطورين واختبار المتاجر
← العودة إلى React Academy