๋ชฉ์ฐจ
์ด์ ๊ธ โผ
0. 2023.05.05 - [๐ | WEB DEV/React] - [React] 0. React๋ฅผ ์ฌ์ฉํ๋ ์ด์ & ์ด๊ธฐ ์ธํ
1. 2023.05.07 - [๐ | WEB DEV/React] - [React] 1. JSX
2. 2023.05.26 - [๐ | WEB DEV/React] - [React] 2. state (๋ณ์, array, object)
2-1. 2023.05.27 - [๐ | WEB DEV/React] - [React] 2-1. array state ์ ๋ ฌํ๊ธฐ ( .sort()ํ์ฉ)
3. 2023.05.28 - [๐ | WEB DEV/React] - [React] 3. ์ปดํฌ๋ํธ (Component)
4. 2023.05.28 - [๐ | WEB DEV/React] - [React] 4. ๋์ ์ธ UI ์ ์ํ๊ธฐ
5. 2023.05.28 - [๐ | WEB DEV/React] - [React] 5. ๋ฐ๋ณต๋๋ ๋ถ๋ถ ์ถ์ฝํ๊ธฐ (map)
6. 2023.05.29 - [๐ | WEB DEV/React] - [React] 6. props
8. 2023.07.06 - [๐ | WEB DEV/React] - [React] 8. ๋ค๋ฅธ ํ์ผ์์ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ
11. 2023.10.03 - [๐ | WEB DEV/React] - [React] 11. ๋ผ์ฐํ -3 ์์ฐํ ๋ผ์ฐํ
React ํน์ React-Native ๊ฐ๋ฐ์ ๋ง์ด ํ์ฉํ๋ styled-components์ ๋ํด์ ์์๋ณด์!
1. styled-components๋?
css ์ฌ์ฉ์ ๋ถํธํ ์
html์ ์คํ์ผ์ ์ถ๊ฐํด์ฃผ๊ณ ์ถ์๋๋ css๋ฅผ ์ด์ฉํ๋ค.
ํ์ง๋ง ์์ ์ ํ๋ค๋ณด๋ฉด ๋ช๊ฐ์ง ๋ถํธํจ์ ๊ฒช์์ ๊ฒ์ด๋ค.
[CSSํ์ผ๋ง ์ฌ์ฉํ ๋ ๋ถํธํ๋ ์ ๋ค..]
- ํ์ฌ ์์ ํ๋ ์ปดํฌ๋ํธ์ ์คํ์ผ ์ ์ฉ ์ค์ด์์ง๋ง class๋ช ์ค๋ณต์ผ๋ก ์ธํด ๊นจ์ง.
- ๊ท๋ชจ๊ฐ ์ปค์ก์ ๋ class ๋ช ์ ์ค๋ณต๋์ง ์๊ฒ ๊ณ์ ์๊ฐํด์ค์ผํจ.
- CSSํ์ผ์ด ๊ธธ์ด์ก์ ๋ ์์ ํ๊ธฐ ๋ฒ๊ฑฐ๋ก์.
styled-components๋ ์คํ์ผ์ ๋จผ์ ์ฃผ์ ํด์ ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค๊ธฐ ๋๋ฌธ์
์ด๋ฌํ ๋ถํธํจ์ ํด์ํ ์ ์๋ค.
styled-components์ ์ฅ๋จ์
1) ์ฅ์
- CSSํ์ผ ์์ด JSํ์ผ์์ ์คํ์ผ ์ ์ฉ ๊ฐ๋ฅ
- ์ด ๋ฐฉ๋ฒ์ ์ด์ฉํ๋ฉด ์คํ์ผ์ด ๋ค๋ฅธ JSํ์ผ์ ์ ์ฉ๋์ง ์์ (↔์ผ๋ฐ cssํ์ผ์ ๋ชจ๋ ํ์ผ์ ์ ์ฉ๋จ)
- ํ์ด์ง ๋ก๋ฉ์๊ฐ ๋จ์ถ ๊ฐ๋ฅ (css ํ์ผ ๋ก๋ฉ์ ์ํ๊ฒ ๋๋ค๋ฉด!)
2) ๋จ์
- JS ํ์ผ์ด ๋ณต์กํด์ง (์ผ๋ฐ ์ปดํฌ๋ํธ์ ๊ตฌ๋ถํด์ผํจ)
- ๋์์ด๋ํ๊ณผ ํ์ ์ด์
- ํ์ผ๊ฐ ์คํ์ผ ์ค๋ณต์ด ๋ง์ด ํ์ํ ๊ฒฝ์ฐ์๋ ์๋ฏธ ์์
+) cssํ์ผ ํ ์ปดํฌ๋ํธ์๋ง ์ ์ฉํ๊ธฐ (css ๋ชจ๋ํ)
์ผ๋ฐ์ ์ธ cssํ์ผ์ ์ ์ฒด ํ์ผ์ ์ ์ฉ๋๋ค.
ํ์ง๋ง ๋ชจ๋ํ๋ฅผ ํ๋ฉด ํ ํ์ผ์๋ง ์ ์ฉํ๋๋ก ํ ์ ์๋ค.
์ปดํฌ๋ํธ๋ช
.module.css
์์ ๊ฐ์ด ํ์ผ๋ช ์ ์ค์ ํ๋ฉด ์ง์ ํ ์ปดํฌ๋ํธ๋ช ์ ๊ฐ์ง jsํ์ผ์๋ง ์ ์ฉ๋๋ค.
2. ์ฌ์ฉํด๋ณด๊ธฐ
1) ์ค์นํ๊ธฐ
npm install styled-components
ํฐ๋ฏธ๋์์ npm์ ์ด์ฉํด ์ค์นํ๋ค.
2) ์ปดํฌ๋ํธ ์์ฑ ๋จ๊ณ
[์์ฑ ์ ์ฐจ]
1. import ํด์ค๊ธฐ
2. styled
(1) import ํด์ค๊ธฐ
import styled from "styled-components"
์ปดํฌ๋ํธ๋ฅผ ์ฝ์ ํ ํ์ผ์ ์์ฒ๋ผ import ํ๋ค.
(2) ์ปดํฌ๋ํธ ๋ง๋ค๊ธฐ
โ styled.ํ๊ทธ๋ช ์ผ๋ก ์ปดํฌ๋ํธ๋ฅผ ์์ฑํ๋ค.
eg.) styled.div, styled.p ๋ฑ ...
โก styled.ํ๊ทธ๋ช ๋ค์ ๋ ๊ฐ์ ``(๋ฐฑํฑ) ์์ ์คํ์ผ์ ์ ์ฉํ๋ค. -> ์ปดํฌ๋ํธ ์์ฑ
โข ๋ณ์์ ๋ด๊ณ <๋ณ์๋ช >์ ํ๊ทธ๋ฅผ ์ํ๋ ๊ณณ์ ์์น์ํจ๋ค. (์ปดํฌ๋ํธ ์ด๋ฏ๋ก ๋์ผํ๊ฒ ์ด์ฉ)
์์
import styled from "styled-components"
let SkyBox = styled.div`
background: rgb(0, 149, 212);
padding: 20px;
border-radius: 10px;
`;
function Page(){
return(
<>
...
<SkyBox/>
</>
)
}
๊ฒฐ๊ณผ
(3) ์ฌํ์ฉ ๊ฐ๋ฅํ ์ปดํฌ๋ํธ๋ก ๋ง๋ค๊ธฐ
์์์ ๋ง๋ div ๋ฐ์ค์ ์๋ง ๋ค๋ฅด๊ฒ ๋ง๋ค๊ณ ์ถ๋ค๊ณ ๊ฐ์ ํ๊ณ
์ฌํ์ฉ์ด ๊ฐ๋ฅํ๋๋ก ๋ง๋ค์ด๋ณด์!
์ปดํฌ๋ํธ props๋ฅผ ์ ๋ฌํ๋ ๊ฒ์ฒ๋ผ styled-components๋ props๋ฅผ ์ด์ฉํ ์ ์๋ค.
styled.ํ๊ทธ๋ช
`
... ${props => props.๋ณ์๋ช
}
`;
์ ์ํ ๋ณ์๋ช ์ ๊ฐ์ง props๋ฅผ ์ ๋ฌํด์ฃผ๋ฉด ๋๋ค.
์๋์ ์์๋ฅผ ๋ณด๋ฉฐ ํ์ธํด๋ณด์!
์์ 1
import styled from "styled-components"
let SkyBox = styled.div`
background: ${props => props.background};
padding: 20px;
border-radius: 10px;
`;
function Page(){
return(
<>
...
<SkyBox background = "gold"/>
<SkyBox background = "cyan"/>
</>
)
}
๊ฒฐ๊ณผ 1
background๋ผ๋ ์ด๋ฆ์ผ๋ก ์๋ช ํ props๋ฅผ ์ ๋ฌํ์ฌ ์์ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ์ป์๋ค!
์์ 2
import styled from "styled-components"
let SkyBox = styled.div`
background: ${props => props.background};
color : ${props => props.background === "black" ? "#efefef" : "#333"};
padding: 20px;
border-radius: 10px;
`;
function Page(){
return(
<>
...
<SkyBox background = "black">Hello</SkyBox>
<SkyBox background = "white">Hello</SkyBox>
</>
)
}
๊ฒฐ๊ณผ 2
'๐ | WEB DEV > React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[React] 13. ๋ฆฌ์กํธ ์ปดํฌ๋ํธ์ Lifecycle์ useEffect (1) | 2024.01.02 |
---|---|
[React] 13. ๋ฆฌ์กํธ ์ปดํฌ๋ํธ์ Lifecycle๊ณผ useEffect (0) | 2024.01.02 |
[React] 11. ๋ผ์ฐํ -3 ์์ฐํ ๋ผ์ฐํ (2) | 2023.10.03 |
[React] 10. ๋ผ์ฐํ -2 (useNavigate, 404page, Nested Routes, Outlet) (0) | 2023.07.10 |
[React] 9. ๋ผ์ฐํ -1 (react-router-dom์ธํ , Routes, Route, Link) (0) | 2023.07.09 |
๋๊ธ