effectScope() إدارة نطاقات الآثار الجانبية دفعة واحدة
آخر تحديث: 2026-10-22
effectScope() إدارة نطاقات الآثار الجانبية دفعة واحدة
تُنشئ effectScope() نطاقًا يجمع عدة مستمعين/خصائص محسوبة معًا لبدئها وإيقافها موحّدةً، بدلًا من إدارة دوال stop واحدة تلو الأخرى.
| المجموعة | التفاعلية: المتقدم |
|---|---|
| النوع | API |
| النطاق | داخل المكوّن |
| إصدار Vue | 3.0+ |
| دعم SSR | مدعوم |
📝 الصيغة
const scope = effectScope()
scope.run(() => {
watch(a, fn)
watchEffect(fn2)
})
scope.stop() // إيقاف جميع الآثار الجانبية داخل النطاق دفعة واحدة
⚙️ الوسائط
| detached | عند true ينفصل عن النطاق الأب (افتراضيًا false ويتوقف مع الأب) |
|---|
القيمة المُرجعة:كائن النطاق: run(cb) / stop() / on() / off() / pause() / resume()
▶ مثال
عدّل الشيفرة أدناه وشاهد النتيجة مباشرة:
المخرجات:
Both logs follow changes until stopAll() is clicked, then neither updates.
💡 نقاط مهمة
💡 نصيحة استخدمها عند كتابة الدوال التركيبية: يحصل المستدعي على مقبض stop/نطاق واحد فقط لإفناء كل شيء دفعة واحدة.
ℹ️ ملاحظة داخل المكوّن تُعلَّق الآثار افتراضيًا تحت نطاق المكوّن؛ وdetached: true يسمح بالعيش المستقل عبر المكوّنات.
⚠️ تحذير لا تُستوعب computed/watch داخل النطاق إلا إذا أُنشئت أثناء عمل ذلك النطاق.
🏷️ المتقدم ذات صلة
💡 حالات ذات صلة
المزيد من الحالات قريباً.
📚 دروس ذات صلة
❓ الأسئلة الشائعة
س هل يمكن الاستغناء عنها؟
ج يكفي stop المُعادة لمستمع واحد؛ وعند إدارة آثار جانبية متعددة كمجموعة تقلّل النطاقات الشيفرة النمطية بشكل ملحوظ.
س أين تُستخدم detached؟
ج تُستخدم في إدارة الحالة التي تتخطى دورة حياة المكوّنات (مثل داخليات Pinia).
س هل يمكن إيقافها مؤقتًا؟
ج تتيح 3.4+ الدالتين pause()/resume() لتعليق جميع الآثار الجانبية داخل النطاق مؤقتًا.