inject() حقن التبعية الموفَّرة من الأجداد
آخر تحديث: 2026-10-22
inject() حقن التبعية الموفَّرة من الأجداد
تستخدم inject() في أي مكوّن ابن البيانات التي وفّرها الأجداد عبر provide، ويمكن توفير قيمة افتراضية احتياطية.
| المجموعة | حقن التبعيات |
|---|---|
| النوع | API |
| النطاق | داخل المكوّن |
| إصدار Vue | 3.0+ |
| دعم SSR | مدعوم |
📝 الصيغة
const theme = inject("theme") // undefined عند عدم التزويد
const theme = inject("theme", "light") // قيمة افتراضية
const theme = inject("theme", () => ref("light")) // قيمة افتراضية من مصنع (مستحسنة، تتجنّب مشاركة النسخة)
⚙️ الوسائط
| key | مفتاح التبعية (يقابل provide) |
|---|---|
| defaultValue | قيمة افتراضية اختيارية؛ تمرير دالة مصنع يتجنّب مشاركة المرجع |
القيمة المُرجعة:القيمة المحقونة (تُعاد القيمة الافتراضية أو undefined عند عدم التزويد)
▶ مثال
عدّل الشيفرة أدناه وشاهد النتيجة مباشرة:
المخرجات:
Without a provider it shows 'Theme: light by default'.
💡 نقاط مهمة
⚠️ تحذير لا تمرّر كائنات/مصفوفات حرفية كقيمة افتراضية: ستتشارك فيها المكوّنات المتعددة، فاستخدم دالة مصنع تُعيد كائنًا جديدًا.
💡 نصيحة عند حقن تبعية تفاعلية احفظ صيغة ref: يفكّها القالب تلقائيًا، وتُكتب في السكربت بصيغة .value.
ℹ️ ملاحظة لا يمكن استدعاؤها إلا داخل setup أو الدوال التركيبية (في مرحلة التنفيذ التزامني).
🏷️ حقن التبعيات ذات صلة
💡 حالات ذات صلة
المزيد من الحالات قريباً.
📚 دروس ذات صلة
❓ الأسئلة الشائعة
س هل يُخطئ إذا لم يوفّر الأجداد التبعية؟
ج لا، تُعيد undefined (مع تلميح في بيئة التطوير)، لذا فإن توفير قيمة افتراضية أكثر أمانًا.
س هل يؤثر تعديل التبعية بعد حقنها على الأجداد؟
ج ما يُحصل عليه هو نفس المرجع: تعديل .value لـ ref يؤثر على حالة الأجداد، وهذا عادةً سلوك غير مرغوب.
س لماذا القيمة الافتراضية على شكل مصنع؟
ج لأن كل استدعاء يولّد نسخة مستقلة، فيُتجنَّب تلويث المكوّنات المتعددة لبيانات افتراضية مشتركة.