استایلدهی یعنی ظاهر دادن به کامپوننتها و صفحات، مثل تنظیم رنگ، اندازه، فونت و سایر ویژگیهای بصری. در ریاکت چند روش برای استایلدهی وجود دارد که هرکدام مزایا و کاربردهای خاص خود را دارند.
در ادامه، با این روشها مرحلهبهمرحله آشنا میشویم و برای هر روش، یک مثال ساده ارائه میدهیم تا بهتر درک کنید که چطور از آنها در پروژههای خود استفاده کنید.
استایل دهی با استایل های Inline
در این روش، استایلها مستقیماً درون تگهای JSX نوشته میشوند. برای این کار، از ویژگی style استفاده میکنیم و یک شیء جاوااسکریپت به آن نسبت میدهیم.
function App() {
return (
<div>
<h1 style={{ color: 'blue', fontSize: '24px' }}>Hello PNLdev!</h1>
<button style={{ backgroundColor: 'green', color: 'white', padding: '10px' }}>
Click Here
</button>
</div>
);
}
export default App;
نکته: برای نوشتن استایل در JSX، از یک شیء جاوااسکریپت استفاده میشود که داخل دو آکولاد {{}} قرار میگیرد؛ آکولاد اول مربوط به جاوااسکریپت در JSX و دومی مربوط به خود شیء است.
نکته: در استایلدهی JSX، از نامهای camelCase مثل backgroundColor
به جای نامهای CSS معمولی مثل background-color
استفاده میشود.
استایلدهی با CSS خارجی
این روش خیلی شبیه کاریه که در HTML معمولی انجام میدیم. یک فایل CSS جداگانه میسازیم، استایلها رو اونجا مینویسیم، و سپس با استفاده از className یا id اون استایلها رو به المانهای JSX نسبت میدیم.
مثلاً فرض کنید فایلی به نام styles.css
داریم با محتوای زیر:
.title {
color: blue;
font-size: 24px;
}
.button {
background-color: green;
color: white;
padding: 10px;
}
حالا توی کامپوننت ریاکت، به این شکل از اون استفاده میکنیم:
import React from 'react';
import './styles.css'; // وارد کردن فایل CSS
function App() {
return (
<div>
<h1 className="title">Hello PNLdev!</h1>
<button className="button">Click Here</button>
</div>
);
}
export default App;
نکته: در JSX باید از className
بهجای class
استفاده کنیم چون class
در جاوااسکریپت یک کلمه رزرو شده است.
استایل دهی با CSS Modules
CSS Modules یک روش پیشرفته برای استایلدهی محلی در ریاکت است. با این روش، استایلهای هر کامپوننت به خودش محدود میشن و روی سایر کامپوننتها تأثیری نمیذارن؛ این یعنی دیگه خبری از تداخل بین کلاسها نیست.
فرض کنید فایلی داریم به نام style.module.css
با این محتوا:
.title {
color: red;
font-size: 20px;
}
و حالا این فایل رو توی کامپوننتمون اینطور استفاده میکنیم:
import React from 'react';
import styles from './style.module.css'; // وارد کردن استایل به صورت شیء
function App() {
return (
<div>
<h1 className={styles.title}>Hello PNLdev!</h1>
</div>
);
}
export default App;
نکته: برای اینکه ریاکت متوجه بشه فایل CSS شما یک ماژول هست، باید حتماً نام فایل با .module.css
تمام بشه.
نکته: فایل استایل بهصورت یک شیء جاوااسکریپت وارد میشه (مثلاً styles
) و برای دسترسی به کلاسها باید از styles.className
استفاده کنید.
خلاصه درس
در این درس آموختید که چگونه به کامپوننتها در ریاکت ظاهر مناسب بدهید. روشهایی که بررسی کردیم:
- CSS خارجی: با تعریف کلاسها در فایلهای جداگانه و استفاده از
className
در JSX، میتوان ظاهر را از منطق جدا کرد. - استایلدهی Inline: زمانی مفید است که بخواهید بهصورت سریع یا داینامیک، ظاهر را در خود JSX تعیین کنید.
- CSS Modules: روشی مدرن برای اعمال استایل محلی، بدون نگرانی از تداخل با دیگر کامپوننتها.