آموزش رویدادها در JSX و React؛ نحوه مدیریت onClick، onChange و onSubmit، دریافت event، ارسال آرگومان و جلوگیری از رفرش فرم با مثالهای کاربردی.
رویدادها (Events) در React پل ارتباطی بین کاربر و رابط کاربری هستند. هر بار که کاربر روی دکمهای کلیک میکند، متنی تایپ میکند یا فرمی را ارسال میکند، یک رویداد رخ میدهد و کامپوننت شما باید به آن واکنش نشان دهد. در JSX، این واکنشها با تابعهای هندلر و نامگذاری CamelCase پیادهسازی میشوند.
در HTML معمولی از attributeهایی مثل onclick استفاده میشود، اما React از Synthetic Event بهره میبرد؛ سیستمی که رویدادهای مرورگر را یکپارچه و بهینه مدیریت میکند. مزیت اصلی این رویکرد، سازگاری بین مرورگرها و عملکرد بهتر در اپلیکیشنهای بزرگ است.
ساختار کلی:
<button onClick={handleClick}>کلیک کن</button>on شروع و ادامه آن CamelCase است (onClick، onChange، onSubmit).تابع رویداد میتواند خارج از کامپوننت یا داخل بدنه آن تعریف شود:
function handleClick() {
alert("دکمه کلیک شد");
}
export default function Sample() {
return <button onClick={handleClick}>کلیک کن</button>;
}برای دسترسی به اطلاعات رویداد، پارامتر event (یا e) را دریافت کنید:
function handleChange(event) {
console.log(event.target.value);
}| رویداد | کاربرد رایج |
|---|---|
onClick | کلیک روی دکمه، لینک یا عنصر |
onChange | تغییر مقدار input، select یا textarea |
onSubmit | ارسال فرم |
onInput | تایپ لحظهای در فیلد متنی |
onMouseEnter / onMouseLeave | هاور روی عنصر |
onKeyDown | فشردن کلید روی صفحهکلید |
اگر تابع را با پرانتز بنویسید، بلافاصله اجرا میشود:
// ❌ اشتباه — تابع هنگام رندر اجرا میشود
<button onClick={handleClick()}>کلیک کن</button>
// ✅ درست — تابع فقط هنگام کلیک اجرا میشود
<button onClick={handleClick}>کلیک کن</button>وقتی به تابع نیاز به پارامتر دارید، از Arrow Function استفاده کنید:
<button onClick={() => handleClick("سارا")}>کلیک کن</button>بهصورت پیشفرض، ارسال فرم (submit) باعث بارگذاری مجدد صفحه میشود. در React با event.preventDefault() این رفتار را متوقف میکنیم:
export default function Sample() {
function handleSubmit(event) {
event.preventDefault();
console.log("فرم ارسال شد");
}
function changeHandler(event) {
console.log(event.target.value);
}
return (
<form onSubmit={handleSubmit}>
<input type="text" onChange={changeHandler} />
<button type="submit">ارسال</button>
</form>
);
}نکته: بهجای
eventمیتوانید از نام کوتاهترeاستفاده کنید؛ هر دو رایج و قابل قبول هستند.
export default function ContactForm() {
function handleSubmit(event) {
event.preventDefault();
alert("پیام شما ثبت شد");
}
function handleInputChange(event) {
console.log("مقدار جدید:", event.target.value);
}
return (
<form onSubmit={handleSubmit}>
<input
type="text"
placeholder="نام خود را وارد کنید"
onChange={handleInputChange}
/>
<button type="submit">ثبت</button>
</form>
);
}| ویژگی | HTML | JSX / React |
|---|---|---|
| نام رویداد | onclick | onClick |
| مقدار | رشته یا کد inline | تابع JavaScript |
| preventDefault | در attribute | داخل تابع هندلر |
| شیء رویداد | Event بومی مرورگر | SyntheticEvent |
رویدادها در React با نامگذاری CamelCase و اتصال تابع به attribute پیادهسازی میشوند. برای جلوگیری از باگهای رایج، تابع را بدون () به رویداد وصل کنید، برای ارسال پارامتر از arrow function استفاده کنید و در فرمها حتماً preventDefault() را فراموش نکنید. با تسلط بر این مفاهیم، هر تعامل کاربری — از کلیک ساده تا فرمهای پیچیده — را بهدرستی مدیریت خواهید کرد.