shallowRef() مرجع تفاعلي ضحل

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

shallowRef() مرجع تفاعلي ضحل

تتتبع shallowRef() استبدال .value فقط دون وكلاء عميقين للكائنات الداخلية: الاستبدال الكامل يُطلق التحديث، أما تعديل الخصائص الداخلية فلا.

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

📝 الصيغة

const big = shallowRef({ list: [] })
big.value = { list: [1] }   // ✅ يُطلق التحديث
big.value.list.push(2)     // ❌ لا يُطلقه (الداخلي غير مُوكَّع)

⚙️ الوسائط

valueأي قيمة ابتدائية (دون وكلاء عميقين للكائنات الداخلية)

القيمة المُرجعة:كائن ref ضحل

▶ مثال

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

المخرجات:

Pushing inside leaves the number unchanged; replacing the whole value shows 3.

💡 نقاط مهمة

💡 نصيحة مناسبة لمجموعات البيانات الضخمة ونسخ المكتبات الخارجية وكائنات الخرائط/الرسوم البيانية: إذ يُهم الاستبدال الكامل فقط دون تفاعلية عميقة.
⚠️ تحذير يمكن بعد التعديل الداخلي إطلاق التحديث يدويًا بـ triggerRef، لكن الاستبدال الكامل يبقى الخيار الأنظف.
ℹ️ ملاحظة يمكن لـ isShallow() التحقق مما إذا كان ref ضحلًا.
المزيد من الحالات قريباً.

📚 دروس ذات صلة

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

س متى تصبح shallowRef ضرورية؟
ج عند تغليف بنية كبيرة للقراءة في معظمها (مثل مصفوفة كبيرة قادمة من واجهة API) مع استبدالها كوحدة واحدة، فيوفّر ذلك كلفة إنشاء الوكيل العميق.
س لماذا لا تتغيّر الصفحة بعد push؟
ج الكائنات الداخلية غير مُوكَّعة فلا يستطيع Vue تتبّع هذا التعديل؛ ولا يتم الإبلاغ بالتحديث إلا باستبدال .value بالكامل.
س هل الفرق في الأداء مع ref(null) كبير؟
ج الفرق واضح مع الكائنات الكبيرة العميقة (يُوفَّر الوكيل المتكرر وجمع الاعتماديات)، ومهمل مع الكائنات الصغيرة.
Web-Tutorial.com

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

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

100%