๐ Styled Componentsโฆ
1๏ธโฃ Styled Components๋?
Styled Components๋ CSS-in-JS
๋ผ์ด๋ธ๋ฌ๋ฆฌ์
๋๋ค.
React ์ปดํฌ๋ํธ ๋ด๋ถ์ ์ง์ ์คํ์ผ์ ์์ฑํ ์ ์๊ฒ ๋์์ค๋๋ค.
๐ ํต์ฌ ํน์ง
- โ ์ปดํฌ๋ํธ ๊ธฐ๋ฐ ์คํ์ผ๋ง
- โ ๊ณ ์ ํ ํด๋์ค ๋ค์ ์๋ ์์ฑ (ํด์ ๊ธฐ๋ฐ)
- โ ์คํ์ผ ์ถฉ๋ ์์
- โ JavaScript์ ๋์ ๊ธฐ๋ฅ 100% ํ์ฉ
2๏ธโฃ ์ค์น ๋ฐฉ๋ฒ
npm install --save styled-components
๋๋ Yarn ์ฌ์ฉ ์
yarn add styled-components
3๏ธโฃ ์ฃผ์ ์ฅ์
๐ก 1. ์ปดํฌ๋ํธ ์คํ์ผ ์บก์ํ
- ์คํ์ผ๊ณผ UI ๋ก์ง์ด ๊ฐ์ ํ์ผ์ ์์ด ์ ์ง๋ณด์๊ฐ ์ฌ์
๐ก 2. ํด๋์ค ๋ค์ ์ถฉ๋ ๋ฐฉ์ง
- ์๋์ผ๋ก ์์ฑ๋ ํด์ class ๋๋ถ์ ์ ์ญ ์คํ์ผ ๊ฐ์ญ ์์
๐ก 3. ๋์ ์คํ์ผ๋ง ์ง์
props
๋ฅผ ํ์ฉํ ์กฐ๊ฑด๋ถ ์คํ์ผ ์ ์ฉ์ด ๊ฐ๋ฅ
background: ${props => props.primary ? "blue" : "gray"};
๐ก 4. ์์ ํ JavaScript ์ฌ์ฉ
- if ๋ฌธ, ๋ณ์, ๊ณ์ฐ ๋ฑ ์์ ๋กญ๊ฒ ์ฌ์ฉ ๊ฐ๋ฅ
๐ก 5. TypeScript์ ํธํ๊ฐ๋ฅ
- ํ์ ์์ ์ฑ๊ณผ ์๋์์ฑ ์ ๊ณต
4๏ธโฃ ๊ธฐ๋ณธ ์ฌ์ฉ ์์
import styled from 'styled-components';
const Button = styled.button\`
background: \${props => props.primary ? "blue" : "gray"};
color: white;
font-size: 1rem;
padding: 0.6em 1.2em;
border: none;
border-radius: 6px;
cursor: pointer;
transition: all 0.2s;
&:hover {
opacity: 0.85;
}
\`;
export default function App() {
return (
<>
<Button primary>Primary Button</Button>
<Button>Default Button</Button>
</>
);
}