computed() إنشاء خاصية محسوبة (computed)
آخر تحديث: 2026-10-22
computed() إنشاء خاصية محسوبة (computed)
تشتق computed() قيمة جديدة من بيانات تفاعلية أخرى وتخزّنها مؤقتًا: لا يُعاد الحساب إلا عند تغيّر أحد الاعتماديات.
| المجموعة | التفاعلية: الأساس |
|---|---|
| النوع | API |
| النطاق | داخل المكوّن |
| إصدار Vue | 3.0+ |
| دعم SSR | مدعوم |
📝 الصيغة
const doubled = computed(() => count.value * 2)
// خاصية محسوبة قابلة للكتابة
const full = computed({
get: () => first.value + " " + last.value,
set: (v) => { [first.value, last.value] = v.split(" ") }
})
⚙️ الوسائط
| getter | دالة getter (أو كائن يحتوي get/set) تقرأ فيها بيانات تفاعلية أخرى |
|---|
القيمة المُرجعة:كائن ComputedRef للقراءة فقط (أو قابل للكتابة)
▶ مثال
عدّل الشيفرة أدناه وشاهد النتيجة مباشرة:
المخرجات:
Shows 'Total: 20' by default; editing either input recalculates the total instantly.
💡 نقاط مهمة
💡 نصيحة لها تخزين مؤقت: تُحسب مرة واحدة مهما تعددت أماكن استخدامها في الصفحة، بينما تعاد methods للتنفيذ مع كل عرض.
⚠️ تحذير لا تكتب آثارًا جانبية داخل getter الخاص بـ computed (مثل إرسال طلبات أو تعديل حالات أخرى)؛ فذلك من مسؤولية watch.
ℹ️ ملاحظة لا تعمل إلا مع مصادر تفاعلية حقيقية: إذا لم تتضمن الاعتماديات بيانات تفاعلية فلن تتحدّث النتيجة أبدًا.
🏷️ الأساس ذات صلة
💡 حالات ذات صلة
المزيد من الحالات قريباً.
📚 دروس ذات صلة
❓ الأسئلة الشائعة
س أيّهما أستخدم: computed أم methods؟
ج عند اشتقاق قيم من بيانات تفاعلية وإعادة استخدامها في أماكن متعددة → computed (مع تخزين مؤقت)؛ وعند الحاجة إلى تمرير معاملات أو تنفيذ عند كل استدعاء (مثل معالجات الأحداث) → دالة عادية.
س هل يمكن الإسناد مباشرة إلى computed؟
ج افتراضيًا هي للقراءة فقط والإسناد إليها يُصدر تحذيرًا؛ وإذا أردت جعلها قابلة للكتابة استخدم الصيغة { get, set }.
س هل يمكن كتابة شيفرة غير متزامنة داخل computed؟
ج لا: يجب أن تُعيد computed قيمتها تزامنيًا؛ وللاشتقاقات غير المتزامنة استخدم watch مع ref.