Event Types توصيف أنواع الأحداث

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

Event Types توصيف أنواع الأحداث

تأتي أنواع الأحداث من @types/react: يُنمَّط onClick كـ MouseEvent<HTMLButtonElement> وonChange كـ ChangeEvent<HTMLInputElement>. بمجرد توصيفها يقدّم currentTarget تلميحات دقيقة عن العنصر لا عنصرًا عامًا. وتوصيف معالج سطري اختياري لأن سمة JSX توفّر النوع لك. وللمعالج الذي تفصله بدالة مستقلة اكتب التوصيف يدويًا فيبقى المحرّر يفحصه.

المجموعةالبيانات والهندسة
النوعنمط

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

📝 الصيغة

function SearchBox() {
  const [kw, setKw] = useState('')

  const onChange = (e: React.ChangeEvent<HTMLInputElement>) => {
    setKw(e.currentTarget.value)   // currentTarget is inferred as HTMLInputElement
  }
  const onSubmit = (e: React.FormEvent<HTMLFormElement>) => {
    e.preventDefault()
  }
  return (
    <form onSubmit={onSubmit}>
      <input value={kw} onChange={onChange} />
    </form>
  )
}
// The inline form needs no annotation: onChange={e => setKw(e.target.value)} - e is inferred

القيمة المرجعة:لا قيمة مرجعة؛ إنها نمط برمجي وليست واجهة قابلة للاستدعاء.

▶ مثال

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

الناتج:

الكتابة تسجّل ChangeEvent<HTMLInputElement> والنقر يسجّل MouseEvent<HTMLButtonElement>، مع آخر أربع مدخلات أدناه — هذه أحداث عادية وقت التشغيل، وتوصيفات TypeScript في كتلة syntax.

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

💡 نصيحة في الصيغة السطرية onChange={e => …} يُستنتج e تلقائيًا، فلا تحتاج توصيفًا صريحًا إلا بفصل المعالج في دالة مستقلة.
ℹ️ ملاحظة تحمل أنواع الأحداث التركيبية معامل نوع يسمّي العنصر: بغيره تحصل Element، ومع عنصر محدّد تدقّ تلميحات currentTarget.
⚠️ تحذير نوع e.target واسع (قد يكون أي عنصر)، فافحص العنصر قبل قراءة value؛ أما e.currentTarget فهو العنصر المربوط به المعالج ونوعه دائمًا دقيق.
المزيد من الحالات قريباً.

📚 دروس ذات صلة

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

س لماذا لا نستخدم نوع MouseEvent الأصلي؟
ج أحداث React تركيبية (غلاف متصفّحات) ولا تحمل الأنواع الأصلية استنتاج عام React، فمزجها يعطي تلميحات خاطئة. استخدم React.MouseEvent وما شابه بانتظام.
س كيف أوصّف onChange لمكوّني الخاص؟
ج يتبع props مكوّنك: type Props = { onChange: (v: string) => void }. فيستنتج المستدعي e من توقيعك بلا حاجة لنوع حدث تركيبي.
س لماذا يكون e.currentTarget فارغًا في رد نداء غير متزامن؟
ج يُضبط currentTarget إلى null بعد عودة المعالج. احفظه أولًا — const el = e.currentTarget — واستخدم el داخل رد النداء.
Web-Tutorial.com

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

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

100%