provide() تزويد الأبناء بتبعية

آخر تحديث: 2026-10-22

provide() تزويد الأبناء بتبعية

توفّر provide() البيانات في المكوّن الأجداد، ويمكن لأي مكوّن ابن مهما تدرّجت مستوياته الحصول عليها عبر inject، متجنّبًا تمرير props طبقة طبقة.

المجموعةحقن التبعيات
النوعAPI
النطاقداخل المكوّن
إصدار Vue3.0+
دعم SSRمدعوم

📝 الصيغة

provide("theme", ref("dark"))
provide("config", readonly(config))   // مستحسن: التزويد للقراءة فقط

⚙️ الوسائط

keyنص أو Symbol كمفتاح التبعية
valueأي قيمة (تحافظ ref/الكائنات التفاعلية على تفاعليتها عبر الحدود)

القيمة المُرجعة:لا شيء

▶ مثال

عدّل الشيفرة أدناه وشاهد النتيجة مباشرة:

المخرجات:

The child shows 'Injected theme: dark'.

💡 نقاط مهمة

💡 نصيحة توفير ref / بيانات reactive يُبقي على التفاعلية لدى الأبناء؛ أما توفير قيمة عادية فهو لقطة لمرة واحدة.
⚠️ تحذير يُستحسن التزويد مع readonly: فتعرية حالة قابلة للكتابة مباشرةً تجعل أي مكوّن ابن قادرًا على تعديل بيانات الأجداد.
ℹ️ ملاحظة استخدام مفاتيح Symbol ثابتة يتجنّب تعارض التسمية (مستحسن في المشاريع الكبيرة/المكتبات).
المزيد من الحالات قريباً.

📚 دروس ذات صلة

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

س ما الفرق بينها وبين props؟
ج props تُمرَّر صراحةً طبقة طبقة؛ بينما provide/inject تعبر المستويات مباشرة، لكن مصدر البيانات أقل بديهية من props، فتناسب السياقات العامة مثل الثيمات والإعدادات.
س هل يمكن تعديل البيانات الموفَّرة؟
ج يمكن (يكفي أن يحصل الابن على المرجع ليعدّلها)، لذا يُستحسن التزويد للقراءة فقط أو توفير دوال تعديل.
س هل تتعارض المفاتيح المتشابهة في الاسم؟
ج يسود الموفِّر الأقرب؛ واستخدام مفاتيح Symbol يتجنّب التعارض نهائيًا.
Web-Tutorial.com

فريق Web-Tutorial التقني

منصة دروس برمجية يديرها عدة مطورين. كل درس يتم كتابته ومراجعته بواسطة مطورين متخصصين في المجال. نعمل على ضمان دقة وموثوقية المحتوى — إذا لاحظت أي مشكلة، فيرجى إخبارنا.

100%