-
Notifications
You must be signed in to change notification settings - Fork 5
styled_components
์ปดํฌ๋ํธ๊ฐ ๋ง์ ๊ฒฝ์ฐ ์คํ์ผ๋ง์ ํ๋ค๋ณด๋ฉด ๋ถํธํจ์ด ์๊ธฐ๋๋ฐ
- class ๋ง๋ค์ด๋์๊ฑธ ๊น๋จน๊ณ ์ค๋ณตํด์ ๋ ๋ง๋ค๊ฑฐ๋
- ๊ฐ์๊ธฐ ๋ค๋ฅธ ์ด์ํ ์ปดํฌ๋ํธ์ ์ํ์ง์๋ ์คํ์ผ์ด ์ ์ฉ๋๊ฑฐ๋
- CSS ํ์ผ์ด ๋๋ฌด ๊ธธ์ด์ ธ์ ์์ ์ด ์ด๋ ต๊ฑฐ๋ ์ ๊ฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค.
์ด๋ styled-components๋ฅผ ์ฌ์ฉํ๋ฉด ์ปดํฌ๋ํธ ์ ์์ ์คํ์ผ์ ๋ฐ๋ก ์ ํ ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ฆ์ผ๋ก์จ ์์๊ฐ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค.
yarn add styled-components
npm install styled-components
import styled from 'styled-components'
์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ด์ฉํ์๋ฉด ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค ๋ ์คํ์ผ์ ๋ฏธ๋ฆฌ ์ฃผ์ ํด์ ๋ง๋ค ์ ์์ต๋๋ค. ์์๋ก, padding : 20px์ธ div๋ฐ์ค๋ฅผ styled-components๋ฅผ ์ด์ฉํด ๋ง๋ค์ด๋ณด๊ฒ ์ต๋๋ค.
import React, { useState } from 'react';
import styled from 'styled-components';
let ๋ฐ์ค = styled.div`
padding : 20px;
`;
function Detail(){
return (
<div>
<HTML ๋ง์ ๊ณณ/>
<๋ฐ์ค></๋ฐ์ค>
</div>
)
}
- div๋ฐ์ค๋ฅผ ํ๋ ๋ง๋ค๊ณ ์ถ์ผ๋ฉด ์ ๋ ๊ฒ styled.div ๋ผ๋๊ฑธ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค. (pํ๊ทธ๋ styled.p)
- ๊ทธ๋ฆฌ๊ณ ๊ทธ ์ค๋ฅธ์ชฝ์ โ backtick ๊ธฐํธ๋ฅผ ์ด์ฉํด์ ๊ธฐ๋ณธ ์คํ์ผ์ ๋ค ๋ฃ์ด์ฃผ๋ฉด ๋ฉ๋๋ค.
- ์ด๋ฅผ ๋ณ์๋ก ์ ์ฅํ๋ฉด ์ปดํฌ๋ํธ๊ฐ ์์ฑ๋ฉ๋๋ค. ์ํ๋ ๊ณณ์ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.
๊ทธ๋ผ ์ต์ข ์ ์ผ๋ก padding : 20px์ธ div๋ฐ์ค๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
ex) font-size : 25px์ธ h4 ํ๊ทธ ์์ฑ
import React, { useState } from 'react';
import styled from 'styled-components';
let ๋ฐ์ค = styled.div`
padding : 20px;
`;
let ์ ๋ชฉ = styled.h4`
font-size : 25px;
`;
function Detail(){
return (
<div>
<HTML ๋ง์ ๊ณณ/>
<๋ฐ์ค>
<์ ๋ชฉ>์๋
ํ์ธ์</์ ๋ชฉ>
</๋ฐ์ค>
</div>
)
}
์ฌ๋ฌ๊ฐ์ง ์ฌ์ฉ๋ฒ ์ค ๊ฐ์ฅ ์ ์ฉํ๊ฑด ๋ฐ๋ก props๋ก ์คํ์ผ๋งํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ์ฌ๋ฌ๊ฐ์ง ๋น์ทํ UI๊ฐ ํ์ํ ๊ฒฝ์ฐ ์ด์ฉ์ฃ ? (ex ์์์ ๋ง๋ ์ ๋ชฉ (h4) ์์๊ฐ ์ฌ๋ฌ๊ฐ์ง ์๊น ๋ฒ์ ์ผ๋ก ํ์ํ ๋)
๊ทธ๋ผ ์ ๋ชฉ์์๋ฅผ ์ฌ๋ฌ๋ฒ ๋ณต์ฌํ๋ ๊ฒ ๋ณด๋ค๋ ๋ค์ํ ์คํ์ผ์ด ํ์ํ ๊ณณ์์ props ๋ฌธ๋ฒ์ ์ด์ฉํด ๊ฐ๋ฐํด์ฃผ๋ฉด ๋ฉ๋๋ค.
import React, { useState } from 'react';
import styled from 'styled-components';
let ๋ฐ์ค = styled.div`
padding : 20px;
`;
let ์ ๋ชฉ = styled.h4`
font-size : 25px;
color : ${ props => props.์์ };
`;
function Detail(){
return (
<div>
<HTML ๋ง์ ๊ณณ/>
<๋ฐ์ค>
<์ ๋ชฉ>์๋
ํ์ธ์</์ ๋ชฉ>
</๋ฐ์ค>
</div>
)
}
โฒ ์ ๋ชฉ(h4)์ color๋ผ๋ ์คํ์ผ์ ๋ฃ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์์๊ธฐ์
๋์
import React, { useState } from 'react';
import styled from 'styled-components';
let ๋ฐ์ค = styled.div`
padding : 20px;
`;
let ์ ๋ชฉ = styled.h4`
font-size : 25px;
color : ${ props => props.์์ };
`;
function Detail(){
return (
<div>
<HTML ๋ง์ ๊ณณ/>
<๋ฐ์ค>
<์ ๋ชฉ ์์="blue">์๋
ํ์ธ์1</์ ๋ชฉ>
<์ ๋ชฉ ์์={'red'}>์๋
ํ์ธ์2</์ ๋ชฉ>
</๋ฐ์ค>
</div>
)
}
โฒ props๋ก ์๋ฆฌ์ก์ ๋ถ๋ถ์ ์ํ๋ ๋ฌธ์๋ฅผ ์ ์กํด์ค ์ ์์ต๋๋ค. ์์ ์์ ์์ props.์์์ด๋ผ๋ props์ ๊ฐ๊ฐ blue๋ผ๋ ๋ฌธ์, red๋ผ๋ ๋ฌธ์๊ฐ ๋ค์ด๊ฐ์ ์ปดํฌ๋ํธ๊ฐ ์์ฑ๋ฉ๋๋ค. ์คํ ํ๋ฉด์ ํตํด ๊ฐ๊ฐ์ ์ปดํฌ๋ํธ๊ฐ ๋ค๋ฅธ ์์ผ๋ก ๋จ๋๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค. ๊ฐ์ ์ปดํฌ๋ํธ์ธ๋ฐ props ๋ฌธ๋ฒ์ ์ด์ฉํด ๊ฐ๊ฐ ๋ค๋ฅธ ์คํ์ผ์ ๋ฃ์ ์ ์๋ค๋ ๊ฒ์ด์ฃ .
- ์คํ์ผ๋ฃ์ ๋ ๋ค๋ฅธ ํ์ผ์ด๋ ์ปดํฌ๋ํธ ๋ช ์ด ๊ฒน์ณ๋ ์ ํ CSS์ ์ผ๋ก ๋ฌธ์ ๊ฐ ์๊ธฐ์ง ์์ต๋๋ค.
- ๊ทธ๋ฆฌ๊ณ ๋์ค์ ์ปดํฌ๋ํธ ์คํ์ผ ์์ ์ ์ํ ๋ CSS๊ฐ ์๋๋ผ ์ปดํฌ๋ํธ ํ์ผ์ ์ฐพ์ผ๋ฉด ๋๋ ์์ ๋ ํธ๋ฆฌํ๊ณ ์.