آموزش استفاده از جاوااسکریپت در JSX با آکولاد {}، نمایش متغیرها، اجرای توابع، شرطسازی و حلقه با map در ریاکت به همراه مثالهای عملی
در JSX که مخفف JavaScript XML است، میتوان با استفاده از آکولاد {} هر عبارت جاوااسکریپتی (JavaScript Expression) را مستقیماً داخل ساختار HTML نوشت. این ویژگی قدرتمند باعث میشود که رابط کاربری (UI) به صورت پویا (Dynamic) و وابسته به دادهها باشد و صفحات وب شما واکنشگرا و هوشمند شوند.
⚠️ توجه مهم: داخل
{}فقط عبارت (Expression) مجاز است، نه دستور (Statement). به همین دلیل نمیتوانید مستقیماً ازif،forیاswitchدرون JSX استفاده کنید.
میتوانید مقدار متغیرهای جاوااسکریپتی را مستقیماً در JSX نمایش دهید:
export default function Sample() {
let name = "سامان";
return (
<h1>نام کاربر: {name}</h1>
);
}✅ هر بار مقدار name تغییر کند، UI نیز بهروزرسانی میشود.
هر نوع محاسبه یا عبارت جاوااسکریپتی داخل {} قابل استفاده است:
<h1>نتیجه محاسبه: {2 + 2}</h1>
<h1>طول نام: {name.length}</h1>
<h1>نام بزرگ: {name.toUpperCase()}</h1>
<h1>آیا نام وجود دارد؟ {Boolean(name)}</h1>میتوانید خروجی توابع را نیز در JSX نمایش دهید. توابع میتوانند پارامتر دریافت کرده و مقادیر مختلفی بازگردانند:
function sayHello(user) {
return `سلام ${user}`;
}
function getCurrentYear() {
return new Date().getFullYear();
}
<h1>{sayHello(name)}</h1>
<p>سال جاری: {getCurrentYear()}</p>برای شرطسازی در JSX، به جای if از روشهای زیر استفاده میکنیم:
&& (برای شرط ساده){name && <h2>خوش آمدی {name}</h2>}
{isLoggedIn && <button>خروج</button>}? :{age >= 18 ? <p>بزرگسال</p> : <p>کودک</p>}
{score > 60 ? <span className="pass">قبول</span> : <span className="fail">مردود</span>}let statusMessage;
if (isOnline) {
statusMessage = <p>آنلاین 🟢</p>;
} else {
statusMessage = <p>آفلاین 🔴</p>;
}
<div>{statusMessage}</div>JSX خودش یک مقدار جاوااسکریپتی محسوب میشود و میتوان آن را در متغیر ذخیره و در بخشهای مختلف استفاده کرد:
let welcomeMessage = <p>به پنل کاربری خوش آمدید</p>;
let footer = <footer>تمامی حقوق محفوظ است</footer>;
<div>
{welcomeMessage}
{footer}
</div>به جای استفاده از for، از متد map() برای پیمایش آرایهها و تولید لیست استفاده میکنیم:
let users = ["سامان", "علی", "رضا", "مریم"];
<ul>
{users.map((user, index) => (
<li key={index}>{user}</li>
))}
</ul>⚠️ نکته: همیشه برای المانهای تکراری از
keyبا مقدار یکتا استفاده کنید تا ریاکت بتواند تغییرات را بهینه مدیریت کند.
مثال پیشرفتهتر با آرایه اشیاء:
let products = [
{ id: 1, name: "لپتاپ", price: "۲۰ میلیون" },
{ id: 2, name: "موبایل", price: "۱۰ میلیون" },
];
<div>
{products.map(product => (
<div key={product.id}>
<h3>{product.name}</h3>
<p>قیمت: {product.price}</p>
</div>
))}
</div>میتوانید مقادیر ویژگیهای HTML را نیز به صورت داینامیک تنظیم کنید:
let imageUrl = "https://example.com/photo.jpg";
let altText = "تصویر پروفایل";
let isDisabled = true;
<img src={imageUrl} alt={altText} />
<button disabled={isDisabled}>ارسال</button>
<input type="text" placeholder={name + " را وارد کنید"} />رویدادها را میتوان با توابع جاوااسکریپتی در JSX مدیریت کرد:
function handleClick() {
alert("دکمه کلیک شد!");
}
function handleInputChange(event) {
console.log(event.target.value);
}
<button onClick={handleClick}>کلیک کن</button>
<input onChange={handleInputChange} />export default function Sample() {
let name = "سامان";
let score = 85;
let isOnline = true;
let users = ["سامان", "علی", "رضا"];
function getStatus(score) {
return score >= 60 ? "✅ قبول" : "❌ مردود";
}
let message = <p>به پنل کاربری خوش آمدید</p>;
return (
<>
<h1>نام: {name}</h1>
<h2>نمره: {score}</h2>
<h3>وضعیت: {getStatus(score)}</h3>
<p>محاسبه: {10 * 5 + 20}</p>
<p>وضعیت آنلاین: {isOnline ? "🟢 آنلاین" : "🔴 آفلاین"}</p>
<div>{message}</div>
<h3>لیست کاربران:</h3>
<ul>
{users.map((user, index) => (
<li key={index}>{user}</li>
))}
</ul>
</>
);
}return محاسبه کنید.key در حلقههای map حتماً استفاده کنید.استفاده از جاوااسکریپت در JSX با آکولاد {} یکی از قدرتمندترین ویژگیهای ریاکت است که به شما امکان میدهد رابطهای کاربری پویا، هوشمند و واکنشگرا بسازید. با تسلط بر مفاهیم بیانشده در این آموزش - از نمایش متغیرها و توابع گرفته تا شرطسازی و حلقهزنی - میتوانید کامپوننتهای حرفهای و کارآمدی برای پروژههای خود بنویسید.