إنتقل إلى المحتوى الرئيسي

فهم آلات الحالة في المدار

· 2 دقائق قراءة
أسامة الغانمي
المؤسس المشارك والقائد التقني

آلات الحالة هي جوهر المدار. في هذا المقال، نستكشف لماذا اخترنا آلات الحالة كأساس لسلوك التطبيق.

لماذا آلات الحالة؟

غالباً ما تعاني تطبيقات الويب التقليدية من سلوك غير متوقع. قد يفعل زر أشياء مختلفة اعتماداً على حالة مخفية أو سباقات أو افتراضات ضمنية مدفونة في الكود.

تحل آلات الحالة هذا بجعل كل حالة ممكنة صريحة وكل انتقال مقصوداً.

تشريح آلة حالة المدار

كل سمة في المدار تحتوي على آلة حالة:

{
"name": "Toggleable",
"stateMachine": {
"initial": "off",
"states": ["off", "on"],
"transitions": [
{
"from": "off",
"event": "TOGGLE",
"to": "on",
"effects": [
["render-ui", "main", { "pattern": "toggle", "props": { "active": true }}]
]
},
{
"from": "on",
"event": "TOGGLE",
"to": "off",
"effects": [
["render-ui", "main", { "pattern": "toggle", "props": { "active": false }}]
]
}
]
}
}

المفاهيم الأساسية

الحالات

تمثل الحالات الأوضاع الممكنة لكيانك. كل حالة صريحة ومسماة.

الأحداث

الأحداث تفعّل الانتقالات. يمكن أن تأتي من إجراءات المستخدم أو أحداث النظام أو مدارات أخرى.

الانتقالات

تحدد الانتقالات كيف ينتقل كيانك من حالة إلى أخرى. كل انتقال يمكن أن يحتوي على:

  • حراس: شروط يجب تحقيقها
  • تأثيرات: إجراءات للتنفيذ (تحديث الحقول، عرض الواجهة، إرسال أحداث)

التأثيرات

التأثيرات هي الآثار الجانبية للانتقال. يدعم المدار:

  • set - تحديث حقل الكيان
  • increment / decrement - تعديل الأرقام
  • render-ui - عرض نمط واجهة
  • emit - نشر أحداث لمدارات أخرى
  • persist - حفظ في قاعدة البيانات
  • navigate - تغيير المسارات

الفوائد

  1. التنبؤية: تعرف دائماً في أي حالة تطبيقك
  2. قابلية الاختبار: اختبر كل انتقال بشكل مستقل
  3. الأمان: الحراس تمنع تغييرات الحالة غير المصرح بها
  4. تصحيح الأخطاء: سجل الحالة يجعل الأخطاء قابلة للتكرار

الخطوات التالية

هل أنت مستعد للبناء باستخدام آلات الحالة؟ اطلع على دليل البداية.