๐จ Styled-components์ ๋ํด์ ์์๋ณด์,,,,
๐ Styled-components๋ฅผ ์ฌ์ฉํ๋ ์ด์
- ์๋ ์ค์ Css : styled-components๋ ํ์ด์ง์์ ๋ ๋๋ง๋๋ ๊ตฌ์ฑ ์์๋ฅผ ์ถ์ ํ๊ณ ์์ ํ ์๋์ผ๋ก ํด๋น ์คํ์ผ๋ง ์ฝ์ ํฉ๋๋ค. ์ฝ๋ ๋ถํ ๊ณผ ํจ๊ป ์ด๋ ์ฌ์ฉ์๊ฐ ํ์ํ ์ต์ํ์ ์ฝ๋๋ฅผ ๋ก๋ํจ์ ์๋ฏธํฉ๋๋ค.
- class ์ด๋ฆ ๋ฒ๊ทธ ์์ : styled-components๋ ์คํ์ผ์ ๋ํ ๊ณ ์ ํ ํด๋์ค ์ด๋ฆ์ ์์ฑํฉ๋๋ค. ์ค๋ณต, ์ค๋ณต ๋๋ ์ฒ ์ ์ค๋ฅ์ ๋ํด ๊ฑฑ์ ํ ํ์๊ฐ ์์ต๋๋ค.
- Css์ ๋ ์ฌ์ด ์ญ์ : ํด๋์ค ์ด๋ฆ์ด ์ฝ๋๋ฒ ์ด์ค์ ์ด๋๊ฐ์์ ์ฌ์ฉ๋๋์ง ์ฌ๋ถ๋ฅผ ์๊ธฐ ์ด๋ ค์ธ ์ ์์ต๋๋ค. styled-components๋ ์คํ์ผ์ ๋ชจ๋ ๋นํธ๊ฐ ํน์ ๊ตฌ์ฑ ์์์ ์ฐ๊ฒฐ๋์ด ์๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ ๋ถ๋ช ํ ํฉ๋๋ค. ๊ตฌ์ฑ ์์๊ฐ ์ฌ์ฉ๋์ง ์๊ณ (๋๊ตฌ๊ฐ ๊ฐ์งํ ์ ์์) ์ญ์ ๋๋ฉด ํด๋น ๊ตฌ์ฑ ์์์ ๋ชจ๋ ์คํ์ผ๋ ํจ๊ป ์ญ์ ๋ฉ๋๋ค.
- ๋จ์ ๋์ ์คํ์ผ๋ง : ์์ญ ๊ฐ์ ํด๋์ค๋ฅผ ์๋์ผ๋ก ๊ด๋ฆฌํ ํ์ ์์ด props ๋๋ ์ ์ญ ํ ๋ง๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ฑ ์์์ ์คํ์ผ์ ์ ์ฉํ๋ ๊ฒ์ด ๊ฐ๋จํ๊ณ ์ง๊ด์ ์ ๋๋ค.
- ์์ฌ์ด ์ ์ง ๊ด๋ฆฌ : ๊ตฌ์ฑ ์์์ ์ํฅ์ ์ฃผ๋ ์คํ์ผ์ ์ฐพ๊ธฐ ์ํด ๋ค๋ฅธ ํ์ผ์ ๊ฒ์ํ ํ์๊ฐ ์์ผ๋ฏ๋ก ์ฝ๋๋ฒ ์ด์ค๊ฐ ์๋ฌด๋ฆฌ ํฌ๋๋ผ๋ ์ ์ง ๊ด๋ฆฌ๋ ์ผ์ดํฌ ์กฐ๊ฐ์ ๋๋ค.
- ์๋ ๊ณต๊ธ์ ์ฒด ์ ๋์ฌ : Css๋ฅผ ํ์ฌ ํ์ค์ผ๋ก ์์ฑํ๊ณ ๋๋จธ์ง๋ styled-components๊ฐ ์ฒ๋ฆฌํ๋๋ก ํฉ๋๋ค.
๐ styled-components ์ค์น ๋ฐฉ๋ฒ
$ with npm
npm install --save styled-components
$ with yarn
yarn add styled-components
์ค์นํ ํ์๋
{
"resolutions": {
"styled-components": "^5"
}
}
package.json ํ์ผ์ ์ ์ฉ๋์ด ์๋ ๊ฒ์ ํ์ธ ํ ์ ์๋ค.
๐ ์์ฑ ๋ฐฉ๋ฒ
render( <Wrapper> <Title> Hello World! </Title> </Wrapper> ); const Title = styled.h1` font-size: 1.5em; text-align: center; color: palevioletred; `; const Wrapper = styled.section` padding: 4em; background: papayawhip; `;