onWatcherCleanup() تسجيل دالة تنظيف للمستمع

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

onWatcherCleanup() تسجيل دالة تنظيف للمستمع

تُسجّل onWatcherCleanup() دالة تنظيف تُستدعى قبل أن يفقد المستمع صلاحيته (عند إعادة تنفيذه أو إيقافه)، وتُستخدم لإلغاء الطلبات والمؤقتات وغيرها.

المجموعةالتفاعلية: الأساس
النوعAPI
النطاقداخل المكوّن
إصدار Vue3.5+
دعم SSRمدعوم

📝 الصيغة

watch(keyword, async () => {
  const controller = new AbortController()
  onWatcherCleanup(() => controller.abort())
  const res = await fetch(url, { signal: controller.signal })
})

⚙️ الوسائط

cleanupFnدالة التنظيف، تُنفّذ قبل أن يفقد المستمع صلاحيته

القيمة المُرجعة:لا شيء (تُستدعى داخل رد نداء المستمع)

▶ مثال

عدّل الشيفرة أدناه وشاهد النتيجة مباشرة:

المخرجات:

Typing fast shows only the final result after a 600ms pause — earlier ones are cancelled.

💡 نقاط مهمة

⚠️ تحذير لا يجوز استدعاؤها إلا في المرحلة التزامنية من رد نداء المستمع: الاستدعاء بعد await يُخطئ، فسجّلها مسبقًا.
💡 نصيحة المعامل الثالث onCleanup في رد نداء watch مكافئ لهذه الدالة، وكلتا الصيغتين شائعتان.
ℹ️ ملاحظة سيناريوهات نموذجية: منع تكرار البحث (debounce)، إلغاء الطلبات المتزاحمة، وتنظيف إعادة اتصال WebSocket.
المزيد من الحالات قريباً.

📚 دروس ذات صلة

❓ الأسئلة الشائعة

س ماذا يحدث دون تنظيف؟
ج تستمر الطلبات/المؤقتات القديمة في العمل: قد تصل استجابة قديمة بطيئة متأخرة وتطغى على النتيجة الجديدة، وهي الحالة التزاحمية النموذجية.
س ما الفرق بينها وبين onUnmounted؟
ج تُنفّذ onWatcherCleanup التنظيف قبل كل إعادة تنفيذ للمستمع؛ بينما تُنفّذ onUnmounted مرة واحدة عند إلغاء تحميل المكوّن.
س هل يمكن استخدامها داخل watchEffect؟
ج نعم، تدعمها watchEffect أيضًا (ويمكن لرد ندائها كذلك استقبال معامل onCleanup).
Web-Tutorial.com

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

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

100%