provide() تزويد الأبناء بتبعية
آخر تحديث: 2026-10-22
provide() تزويد الأبناء بتبعية
توفّر provide() البيانات في المكوّن الأجداد، ويمكن لأي مكوّن ابن مهما تدرّجت مستوياته الحصول عليها عبر inject، متجنّبًا تمرير props طبقة طبقة.
| المجموعة | حقن التبعيات |
|---|---|
| النوع | API |
| النطاق | داخل المكوّن |
| إصدار Vue | 3.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 يتجنّب التعارض نهائيًا.