toRef() تحويل خاصية إلى ref يبقى مرتبطًا
آخر تحديث: 2026-10-22
toRef() تحويل خاصية إلى ref يبقى مرتبطًا
تحوّل toRef() خاصية من كائن تفاعلي إلى ref يبقى مرتبطًا بالاتجاهين: القراءة والكتابة من خلاله تعادل التعامل مع الخاصية الأصلية.
| المجموعة | التفاعلية: الأدوات |
|---|---|
| النوع | API |
| النطاق | داخل المكوّن |
| إصدار Vue | 3.0+ |
| دعم SSR | مدعوم |
📝 الصيغة
const state = reactive({ count: 0 })
const count = toRef(state, 'count')
count.value++ // تكافئ state.count++
⚙️ الوسائط
| object | كائن تفاعلي |
|---|---|
| key | اسم الخاصية |
القيمة المُرجعة:ref مرتبط بشكل ثنائي الاتجاه بالخاصية الأصلية
▶ مثال
عدّل الشيفرة أدناه وشاهد النتيجة مباشرة:
المخرجات:
Both numbers always match: writing the ref updates state.count.
💡 نقاط مهمة
💡 نصيحة الاستخدام القياسي: تحويل أحد حقول props إلى ref قبل تمريره إلى دالة تركيبية (composable) لتجنّب فقدان التفاعلية.
ℹ️ ملاحظة تكافئ toRef(state, 'a') النتيجة toRefs(state).a؛ ويمكن إنشاؤها حتى لو كانت الخاصية غير موجودة (وقابلة للكتابة).
⚠️ تحذير toRef مجرد قناة ولا تنسخ البيانات: عند استبدال الكائن المصدر كليًا ينقطع الاتصال.
🏷️ الأدوات ذات صلة
💡 حالات ذات صلة
المزيد من الحالات قريباً.
📚 دروس ذات صلة
❓ الأسئلة الشائعة
س ما العلاقة بين toRef وtoRefs؟
ج تتعامل toRef مع خاصية واحدة، بينما تُعيد toRefs كائن refs لكل الخصائص دفعة واحدة، وغالبًا ما تُستخدم لتفكيك الحالة بالكامل.
س لماذا لا يكفي التفكيك المباشر؟
ج يُعطي const { count } = state رقم لقطة لا يتزامن مع التغييرات اللاحقة — بينما يحافظ toRef على الاتصال الحيّ.
س هل تعمل على الكائنات العادية؟
ج نعم، لكن الكائن العادي لا يحمل تفاعلية، فيكون ref مجرد قناة مريحة لقراءة الخاصية وكتابتها.