اكتشاف مخطط ألوان النظام
اقرأ تفضيل المستخدم للوضع الداكن في نظام التشغيل باستخدام prefers-color-scheme، وحدّث حالة React عند تغيّره
اكتشاف مخطط ألوان النظام درس مجاني في React Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في React Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة React Academy 4 دروس في المجموع.
استعلام الوسائط prefers-color-scheme
يكتشف استعلام وسائط CSS prefers-color-scheme ما إذا كان المستخدم قد ضبط نظام التشغيل لاستخدام سمة ألوان داكنة أو فاتحة. يقبل الاستعلام قيمتين: dark وlight. يُضبط هذا التفضيل على مستوى نظام التشغيل ضمن إعدادات النظام، وليس في المتصفح.
الوضع الداكن في CSS عبر استعلام الوسائط
يمكنك تطبيق الأنماط الداكنة باستخدام CSS فقط عبر @media (prefers-color-scheme: dark) { ... }. داخل هذه الكتلة، غيّر الألوان والخلفيات والحدود لتناسب لوحة ألوان داكنة. لا يتطلب هذا الأسلوب JavaScript، ويعمل حتى قبل تحميل React.
window.matchMedia في JavaScript
في JavaScript، تُرجع window.matchMedia('(prefers-color-scheme: dark)') كائن MediaQueryList. يمكنك استخدامه لقراءة تفضيل النظام الحالي برمجيًا داخل خطافات React أو معالجات الأحداث. وهذه هي حلقة الوصل بين استعلامات وسائط CSS ومنطق JavaScript لديك.
قراءة القيمة الأولية
يحتوي كائن MediaQueryList على الخاصية matches التي تُرجع قيمة منطقية. إذا كانت قيمة matches هي true، فالنظام في الوضع الداكن؛ وإذا كانت false، فهو في الوضع الفاتح. عادةً ما تقرأ هذه القيمة مرة واحدة عند التحميل لتهيئة حالة السمة.
الاستماع إلى تغييرات النظام
يمكن للمستخدمين تغيير نظام ألوان نظام التشغيل في أي وقت. للاستجابة ديناميكيًا، استدعِ mediaQuery.addEventListener('change', handler)، حيث يتلقى handler كائن MediaQueryListEvent المحدّث. ويحتوي كائن الحدث أيضًا على قيمة منطقية matches تعكس التفضيل الجديد.
إنشاء خطاف usePrefersDarkMode
من الأساليب النظيفة إنشاء خطاف مخصص باستخدام useSyncExternalStore. يشترك الخطاف في mediaQuery.addEventListener، ويوفّر دالة لقطة تُرجع mediaQuery.matches. يحافظ ذلك على مزامنة الخطاف مع واجهة برمجة التطبيقات الخارجية للمتصفح دون إدارة يدوية للحالة.
إلغاء الاشتراك عند التنظيف
عند إزالة مكوّنك من شجرة العرض، يجب إزالة مستمع الأحداث لتجنب تسرّبات الذاكرة. في دالة التنظيف الخاصة بـ useEffect، استدعِ mediaQuery.removeEventListener('change', handler). ومع useSyncExternalStore، يجب أن تُرجع دالة الاشتراك دالةً لإلغاء الاشتراك تنفّذ الأمر نفسه.
تفضيل النظام مقابل تجاوز المستخدم
تفضيل النظام هو ما يبلّغه نظام التشغيل. لكن المستخدمين غالبًا ما يرغبون في تجاوز سمة التطبيق بشكل مستقل، مثل إبقاء التطبيق في الوضع الفاتح بينما يكون نظام التشغيل في الوضع الداكن. ينبغي لبنيتك أن تميّز بين الإعداد الافتراضي للنظام والتجاوز الصريح من المستخدم المخزّن في localStorage.
محاكاة نظام الألوان في DevTools
يتيح Chrome DevTools محاكاة تفضيلات نظام الألوان دون تغيير إعدادات نظام التشغيل. افتح DevTools، وانتقل إلى علامة تبويب Rendering، ثم ابحث عن القائمة المنسدلة "Emulate CSS media feature prefers-color-scheme". وتُعد هذه الميزة مفيدة جدًا لاختبار السمتين بسرعة أثناء التطوير.
احترام تفضيل المستخدم افتراضيًا
تقرأ عملية تنفيذ الوضع الداكن الجيدة تفضيل النظام كنقطة بداية افتراضية وتطبّقه فورًا. ويُظهر ذلك احترام إعدادات إمكانية الوصول التي اختارها المستخدم. لا تخزّن تجاوزًا مختلفًا ولا تستخدمه إلا بعد أن يبدّل المستخدم السمة صراحةً داخل تطبيقك.
اعتبارات SSR لتفضيل النظام
لا تكون window.matchMedia موجودة على الخادم. إذا كنت تعرض التطبيق على الخادم، فتحقق من typeof window !== 'undefined' قبل استدعاء matchMedia. وفي تطبيقات SSR، اقرأ تفضيل المستخدم من ملف تعريف ارتباط أو ترويسة HTTP بدلًا من ذلك لتجنب اختلافات hydration.
التحقق من واجهة matchMedia البرمجية
ما الخاصية في كائن MediaQueryList التي تخبرك ما إذا كان استعلام الوسائط متطابقًا حاليًا؟
مراجعة الدرس: اكتشاف نظام ألوان النظام
يتيح استعلام الوسائط prefers-color-scheme الوصول إلى تفضيل نظام التشغيل للألوان في كل من CSS وJavaScript. استخدم window.matchMedia للقراءة والاستماع إلى التغييرات، ونظّف مستمعي الأحداث دائمًا، وميّز بين الإعدادات الافتراضية للنظام وتجاوزات المستخدم. تسرّع محاكاة Chrome DevTools اختبار السمتين.
الأسئلة الشائعة
هل درس «اكتشاف مخطط ألوان النظام» مجاني؟
نعم — نص درس «اكتشاف مخطط ألوان النظام» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة React Academy، انتقل إلى CoddyKit PRO. تتضمن دورة React Academy 4 دروس في المجموع.
ماذا ستتعلم في «اكتشاف مخطط ألوان النظام»؟
اقرأ تفضيل المستخدم للوضع الداكن في نظام التشغيل باستخدام prefers-color-scheme، وحدّث حالة React عند تغيّره تتمرن على React Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ React Academy؟
لا تُشترط خبرة سابقة. React Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «اكتشاف مخطط ألوان النظام»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس React Academy هذا؟
نعم. كل درس في React Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- اكتشاف مخطط ألوان النظام
- متغيرات CSS لتبديل السمات
- React Context لحالة السمة
- حفظ السمة ومنع الوميض