آموزش استفاده از Template Literal در JSX برای نوشتن داینامیک className، شرطسازی و ترکیب متون در ریاکت با مثالهای کاربردی
گاهی در JSX میخواهیم مقدار را به صورت داینامیک بنویسیم. ( مثلا در className)
برای این کار از Template Literal استفاده میکنیم.
Template Literal یک روش مدرن در جاوااسکریپت برای نوشتن رشتهها است که با بکتیک ` مشخص میشود و به ما امکان میدهد تا متغیرها و عبارات را مستقیماً درون رشته قرار دهیم.
`مقدار متغیر: ${variable}`برای استفاده از Template Literal در ویژگیهای JSX، به جای کوتیشن " " یا ' '، از بکتیک ` استفاده میکنیم:
className={`مقدار`}دلیل اصلی استفاده، نیاز به ترکیب چند مقدار یا اعمال شرط در ویژگیهای JSX است.
const baseClass = "box";
const isLarge = true;
<div className={`${baseClass} ${isLarge ? "large" : "small"}`}>
محتوا
</div>نتیجه در DOM:
isLarge برابر true باشد:class="box large"isLarge برابر false باشد:class="box small"<div className={`box ${isActive ? "active" : ""}`}>
محتوا
</div>نتیجه در DOM:
isActive برابر true باشد:className="box active"isActive برابر false باشد:className="box"const name = "Ali";
<h1 className={`title-${name}`}>
سلام {name}
</h1>خروجی:
<h1 class="title-ali">سلام ali</h1>classnames برای شرطهای پیچیدهاگر تعداد کلاسهای شرطی زیاد شد، از کتابخانه classnames استفاده کنید:
npm install classnamesimport classNames from "classnames";
<div className={classNames("box", { active: isActive, disabled: isDisabled, large: size === "large" })}>
محتوا
</div>` را با کوتیشن " " اشتباه نکنید.${} میتوانید هر عبارت جاوااسکریپتی قرار دهید.style نیز میتوان از Template Literal استفاده کرد:<div style={{ backgroundColor: `#${colorCode}` }}>...</div>استفاده از Template Literal در JSX یکی از ابزارهای قدرتمند برای نوشتن کدهای داینامیک و خوانا در ریاکت است. این روش به شما امکان میدهد تا به راحتی کلاسها، متنها و ویژگیها را بر اساس وضعیت کامپوننت تغییر دهید. برای پروژههای کوچک، همان Template Literal ساده کافی است؛ اما برای پروژههای بزرگتر، استفاده از کتابخانههایی مانند classnames به مدیریت بهتر کد کمک میکند.