آموزش رندر شرطی در React با if، عملگر ternary و &&؛ نحوه نمایش یا مخفیکردن بخشهای JSX بر اساس state و props با مثالهای عملی و کاربردی.
در اپلیکیشنهای واقعی، همه کاربران همه چیز را نمیبینند. گاهی باید پیام «لطفاً وارد شوید» نشان دهید، گاهی دکمه مدیریت و گاهی هیچچیز. رندر شرطی (Conditional Rendering) یعنی نمایش یا عدم نمایش بخشهای JSX بر اساس یک شرط — یکی از پایههای ساخت UI هوشمند در React.
رندر شرطی به معنای تصمیمگیری در زمان رندر است: اگر شرط برقرار باشد، یک JSX نمایش داده میشود؛ در غیر این صورت JSX دیگری یا هیچچیز. React سه روش اصلی برای این کار ارائه میدهد: if خارج از JSX، عملگر ternary و عملگر &&.
داخل JSX نمیتوان مستقیماً if نوشت، اما قبل از return آزاد هستید:
export default function Welcome() {
const isLogin = true;
if (isLogin) {
return <h1>خوش آمدید</h1>;
}
return <h1>لطفاً وارد شوید</h1>;
}این روش برای شرطهای پیچیده یا return زودهنگام بسیار خوانا است.
وقتی میخواهید یکی از دو حالت را مستقیماً داخل JSX نشان دهید:
export default function Welcome() {
const isLogin = false;
return (
<div>
{isLogin ? <h1>خوش آمدید</h1> : <h1>لطفاً وارد شوید</h1>}
</div>
);
}ساختار:
شرط ? JSX_درست : JSX_غلطوقتی فقط در صورت درست بودن شرط چیزی نمایش دهید و حالت else ندارید:
export default function Dashboard() {
const isAdmin = true;
return (
<div>
{isAdmin && <h1>پنل مدیریت</h1>}
</div>
);
}true → JSX رندر میشود.false → React چیزی نمایش نمیدهد.| روش | بهترین کاربرد | محل نوشتن |
|---|---|---|
if | شرطهای چندشاخه، return زودهنگام | قبل از return |
? : | انتخاب بین دو JSX | داخل {} در JSX |
&& | نمایش اختیاری بدون else | داخل {} در JSX |
export default function UserPanel() {
const isLogin = true;
const isAdmin = true;
if (!isLogin) {
return <h1>لطفاً وارد شوید</h1>;
}
return (
<div>
<h1>خوش آمدید</h1>
{isAdmin ? (
<p>شما مدیر سیستم هستید</p>
) : (
<p>شما کاربر عادی هستید</p>
)}
{isAdmin && <button>ورود به پنل مدیریت</button>}
</div>
);
}if/else if قبل از return خواناتر از ternary تو در تو است.&& مراقب باشید شرط 0 یا "" باشد؛ React ممکن است آن را رندر کند. در این موارد از Boolean() یا مقایسه صریح استفاده کنید.isLoading، error یا user.role.رندر شرطی به UI شما هوش میدهد. از if برای منطق پیچیده، از ternary برای دو حالت متقابل و از && برای نمایش اختیاری استفاده کنید. ترکیب این سه روش در پروژههای واقعی رایج است و با تسلط بر آنها، هر سناریوی نمایشی — از loading تا دسترسی نقشمحور — را پوشش میدهید.