آموزش Styled Components در React؛ نصب styled-components، ساخت کامپوننت استایلدار، استایل داینامیک با props، extend و تفاوت با CSS معمولی در پروژه.
Styled Components رویکرد CSS-in-JS است: CSS را داخل فایل JavaScript مینویسید و کامپوننت استایلدار میسازید. استایلها scoped هستند، با props داینامیک میشوند و کنار منطق کامپوننت میمانند. کتابخانههای مشابه: @emotion/styled.
npm install styled-componentsimport styled from "styled-components";
const Title = styled.h1`
color: #e11d48;
font-size: 30px;
font-weight: bold;
`;
function App() {
return <Title>سلام دنیا</Title>;
}styled.h1 یک h1 با CSS داخل template literal میسازد.
const Button = styled.button`
background-color: ${(props) => (props.$primary ? "blue" : "gray")};
color: white;
padding: 10px 16px;
border: none;
border-radius: 6px;
cursor: pointer;
`;
function App() {
return (
<>
<Button $primary>دکمه اصلی</Button>
<Button>دکمه معمولی</Button>
</>
);
}با prop $primary (یا primary) رنگ پسزمینه عوض میشود.
const Button = styled.button`
padding: 10px;
border: none;
`;
const DangerButton = styled(Button)`
background-color: red;
color: white;
`;DangerButton همه استایلهای Button را به ارث میبرد.
const Box = styled.div`
width: ${(props) => props.size}px;
height: ${(props) => props.size}px;
background-color: #22c55e;
`;
function App() {
return <Box size={100} />;
}| مزیت | توضیح |
|---|---|
| Scoped | بدون تداخل کلاس global |
| داینامیک | استایل بر اساس props/state |
| co-location | CSS کنار JSX |
| نکته | توضیح |
|---|---|
| bundle | runtime اضافه نسبت به CSS Modules |
| یادگیری | syntax جدید برای تیم |
| CSS معمولی | Styled Components |
|---|---|
فایل .css جدا | CSS داخل .js |
| className رشته | کامپوننت اختصاصی |
| استایل داینامیک با کلاس اضافه | template + props |
Styled Components برای تیمهایی که CSS را بخشی از کامپوننت میخواهند و استایل وابسته به props زیاد دارند عالی است. نصب، styled.tag، props در template و styled(Component) برای extend — با این چهار مفهوم میتوانید UI ماژولار و بدون تداخل بسازید.