watchSyncEffect() أثر جانبي يُنفّذ تزامنيًا
آخر تحديث: 2026-10-22
watchSyncEffect() أثر جانبي يُنفّذ تزامنيًا
تكافئ watchSyncEffect() watchEffect مع flush: 'sync': تُنفّذ تزامنيًا فور تغيّر الاعتمادية دون تجميع (batching).
| المجموعة | التفاعلية: الأساس |
|---|---|
| النوع | API |
| النطاق | داخل المكوّن |
| إصدار Vue | 3.0+ |
| دعم SSR | مدعوم |
📝 الصيغة
watchSyncEffect(() => {
console.log('تنفيذ فوري', count.value)
})
⚙️ الوسائط
| effect | دالة الأثر الجانبي؛ الخيارات مطابقة لـ watchEffect (دون flush) |
|---|
القيمة المُرجعة:دالة stop() لإيقاف الاستماع
▶ مثال
عدّل الشيفرة أدناه وشاهد النتيجة مباشرة:
المخرجات:
A +2 click logs twice (e.g. '2 2'); with default flush you would see the final value once.
💡 نقاط مهمة
⚠️ تحذير التنفيذ التزامني يتجاوز التجميع، وهذا خطر أداء واضح في سيناريوهات التغيّر المتكرر — فلا تستخدمه إلا عند الضرورة القصوى لالتقاط كل تغيّر بدقة.
ℹ️ ملاحظة استخدامات نموذجية: تتبّع الأخطاء، والسيناريوهات التي تتطلب تسجيل كل تغيّر بترتيب صارم.
💡 نصيحة إذا كان watch (بالوضع الافتراضي pre) مع nextTick كافيين فلا تلجأ إلى sync.
🏷️ الأساس ذات صلة
💡 حالات ذات صلة
المزيد من الحالات قريباً.
📚 دروس ذات صلة
❓ الأسئلة الشائعة
س ما الفرق بين وضع sync والوضع الافتراضي؟
ج الافتراضي يدمج التعديلات المتعددة في الجولة الواحدة بتنفيذ واحد؛ أما sync فيُنفّذ مرة عند كل تعديل.
س هل يزيد احتمال حدوث مشاكل أداء؟
ج نعم، إذ يُنفّذ الأثر الجانبي تزامنيًا عند كل إسناد، والتعديل داخل الحلقات يضاعف التكلفة خطيًا.
س هل يوفّر القيمتين القديمة والجديدة؟
ج لا، فهي من عائلة watchEffect؛ وللحصول على القيمتين استخدم watch مع flush: 'sync'.