useDebounce خطّاف تأخير التنفيذ

آخر تحديث: 2026-11-03

useDebounce خطّاف تأخير التنفيذ

يأخذ useDebounce قيمة تتغيّر بسرعة، مثل نص مربع بحث، ويعيد نسخة ثابتة منها بعد N مللي ثانية فقط: فإذا تغيّرت القيمة مجدداً في الأثناء، انطلق المؤقّت من جديد. وقد يقود طلباتك بها فيختفي كم كبير من العمل بلا داعٍ، وهو ما يجعله عنصراً أساسياً في البحث والتكمال التلقائي ومعالجة تغيير الحجم. والقيمة التي يعيدها متأخّرة عن قصد، وهذا التأخّر هو ما يستبعد ضغطات المفاتيح الوسيطة تماماً.

المجموعةأنماط المكونات
النوعخطاف
منذ الإصدارReact 16.8

ℹ️ ملاحظة يحوّل المحرّر JSX إلى JavaScript ويعرض الواجهة الحقيقية داخل بيئة معزولة؛ تُركَّب المكوّنات تلقائياً دون استدعاء render يدوي.

📝 الصيغة

function useDebounce(value, delay = 300) {
  const [debounced, setDebounced] = useState(value)
  useEffect(() => {
    const t = setTimeout(() => setDebounced(value), delay)
    return () => clearTimeout(t)   // تغيّرت القيمة مجدداً: ألغِ المؤقّت القديم
  }, [value, delay])
  return debounced
}

⚙️ المعاملات

valueالقيمة الخام التي نريد تأخير تنفيذها، وهي عادةً حالة حقل خاضع للرقابة.
delayمدة التأخير بالمللي ثانية، 300 افتراضياً. ولا تُعاد القيمة الجديدة إلا بعد هدوء القيمة تلك المدة.

القيمة المرجعة:يعيد القيمة المؤخّرة الثابتة: تبقى كما هي ما دامت القيمة الخام تتغيّر، ولا تلحق بها إلا بعد توقّف.

▶ مثال

المثال يعمل مباشرة: يُعرض تلقائياً عند التوسيع وتظهر التعديلات فوراً.

الناتج:

أثناء كتابتك بسرعة يبقى سطر «Debounced» ثابتاً ولا يلحق بك إلا بعد نصف ثانية من توقفك — فالطلب الذي يقوده هذه القيمة ينطلق مرة واحدة، بالقيمة النهائية.

💡 النقاط الأساسية

💡 نصيحة اجعل القيمة المؤخّرة اعتمادية لـ useEffect، عندئذٍ ينطلق الطلب تلقائياً مرة واحدة بعد استقرار القيمة.
ℹ️ ملاحظة تأخير التنفيذ ينتظر الهدوء، بينما الخنق يحافظ على إيقاع: استخدم delay للاقتراحات في البحث، و throttle للتمرير اللانهائي.
⚠️ تحذير يجب أن يمسح الأثر المؤقّت، وإلا ظلّ المؤقّت القديم يعمل بعد إزالة المكوّن أو بعد تغيّر القيمة مجدداً.
المزيد من الحالات قريباً.

📚 دروس ذات صلة

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

س ما الفرق بين تأخير التنفيذ والخنق؟
ج تأخير التنفيذ ينفَّذ مرة واحدة بعد توقف التغييرات؛ والخنق ينفَّذ على فاصل زمني ثابت. فحقل البحث يريد تأجيلاً، والتمرير والسحب يريدان خنقاً.
س كم ينبغي أن تكون المدة؟
ج من 300 إلى 500 مللي ثانية هو المدى المعتاد للبحث؛ اخفضها حين يجب أن يبدو الاستجابة فورياً وارفعها حين تكون كلفة الخادم مرتفعة، مع الموازنة بين ذلك وسلوك الواجهة.
س لماذا يجب على الأثر أن يعيد دالة تنظيف؟
ج يعاد تشغيل الأثر عند كل تغيّر للقيمة؛ وبدون مسح المؤقّت القديم ستُكتب القيمة البائتة ويختلّ التأخير.
Web-Tutorial.com

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

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

100%