effectScope() إدارة نطاقات الآثار الجانبية دفعة واحدة

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

effectScope() إدارة نطاقات الآثار الجانبية دفعة واحدة

تُنشئ effectScope() نطاقًا يجمع عدة مستمعين/خصائص محسوبة معًا لبدئها وإيقافها موحّدةً، بدلًا من إدارة دوال stop واحدة تلو الأخرى.

المجموعةالتفاعلية: المتقدم
النوعAPI
النطاقداخل المكوّن
إصدار Vue3.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() لتعليق جميع الآثار الجانبية داخل النطاق مؤقتًا.
Web-Tutorial.com

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

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

100%