CodeSquad๐นDay 84
Vending Machine Project
Design
grid๋ฅผ ์ ์ฉํด์ ์ํ๊ธฐ ๋์์ธ์ ๊ฑฐ์ ์๋ฃํ๋ค. ๋์๊ณผ ๋น๊ตํด ๋ณด๋, ์ฝ๊ฐ ๋ค๋ฅธ ์ ๋ ์์ง๋ง ๊ฑฐ์ ๋น์ทํ๊ฒ ๋์๋ค.
React Router v6 ์ ์ฉ
์ ๊ธ์ ์ฐธ๊ณ ํด์ React Router๋ฅผ ํ์ตํ๊ณ ์ ์ฉํด ๋ณด์๋ค. ๊ฐ๋ ๋ถํฐ ์ฝ๋ ์์ ๊น์ง ์ฐจ๊ทผ์ฐจ๊ทผ ์ฐ์ฌ ์์ด์ ๊ณต๋ถํ๊ธฐ ๋งค์ฐ ์ข์๋ค.
์ค์ฒฉ๋ Route๋ฅผ ์ฌ์ฉํ ๋, Outlet ์ปดํฌ๋ํธ๋ฅผ ์จ์ ์ฒ๋ฆฌํ๋ ๊ฒ์ด ์ ๊ธฐํ๋ฉด์๋ ํธํ๋ค. Outlet์ Route์ children์ผ๋ก ๋ค์ด๊ฐ๋ JSX ์๋ฆฌ๋จผํธ๋ฅผ ๋ณด์ฌ ์ค๋ค.
๋นจ๊ฐ ์์ผ๋ก ํ์ํ Route์ children์ Vendor, Wallet, Stock, NotFound๊ฐ ์๋ค.
components ํด๋์ Layout.jsx๋ฅผ ํ๋ ๋ง๋ค๊ณ Navbar๋ฅผ ์ต์๋จ์ ๋ฃ๊ณ , InnerContainer ์์ Outlet ์ปดํฌ๋ํธ๋ฅผ ๋ฃ์ด์ฃผ์๋ค. ์ด Outlet์ ์๋ฆฌ์ Route์ children์ธ Vendor, Wallet, Stock, NotFound ๊ฐ ๋ค์ด์ค๊ฒ ๋๋ค.
NavLink
Link ์ปดํฌ๋ํธ๋ฅผ ์ ์ฉํด๋ ๋์ง๋ง ์ข ๋ ๋ถ๊ฐ์ ์ธ ๊ธฐ๋ฅ์ด ํฌํจ๋ ์ปดํฌ๋ํธ์ธ NavLink ์ปดํฌ๋ํธ๋ฅผ ์ฒ์ ์ ์ฉํด ๋ณด์๋ค. ๋ฑ Navigation Bar๋ฅผ ์ํ ์ปดํฌ๋ํธ๋ผ๋ ์๊ฐ์ด ๋ค์๋ค.
NavLink ์ปดํฌ๋ํธ๋ ๋งํฌ์์ ์ฌ์ฉํ๋ ๊ฒฝ๋ก๊ฐ ํ์ฌ ๋ผ์ฐํธ์ ๊ฒฝ๋ก์ ์ผ์นํ๋ ๊ฒฝ์ฐ, ํน์ ์คํ์ผ ํน์ CSS class๋ฅผ ์ ์ฉํด์ค๋ค. style์ด๋ className์ ์ค์ ํ ๋ { isActive: boolean } ์ ํ๋ผ๋ฏธํฐ๋ก ์ ๋ฌ๋ฐ๋ ํจ์ ํ์ ์ ๊ฐ์ ์ ๋ฌํ๋ค.
๋๋ ์ด๋ ๊ฒ NavLink๋ฅผ ์ ์ฉํด๋ดค๋ค. style ์์ ๊ฐ์ ํจ์๊ฐ ๋ค์ด๊ฐ๊ฒ ๋๋๋ฐ ์ด๊ฒ๋ ์ค๋ณต ์ ๊ฑฐ๋ฅผ ํ ์ ์์๊น?
Not Found page
wildcard ๋ฌธ์์ธ *๋ฅผ ์ฌ์ฉํด์ Not Found ํ์ด์ง๋ ๋ง๋ค์ด ๋ณด์๋ค. ์ด๊ฒ์ ์๋ฌด ํ ์คํธ๋ ๋งค์นญ์ ํ๋ค๋ ๊ฑด๋ฐ ์ฐ์ ํด๋น Route Element์ ์๋จ์ ์๋ Route๋ค์ ๊ท์น์ ๋ชจ๋ ํ์ธํ ํ์ ์ผ์นํ๋ Route๊ฐ ์์ผ๋ฉด Not Found ํ๋ฉด์ด ๋ํ๋๊ฒ ํ๋ ๊ฒ์ด๋ค.
๐ฑ ํฐํธ ์ ์ฉ
์ฌ์ค ํฐํธ๋ฅผ ์ ์ฉํ ๋ ๋ง์ด ๊ณ ์ํ๋ค. GlobalStyle์ ์๋ฌด๋ฆฌ ์ ์ฉ์ ์ ๋๋ก ํ์ด๋ ์ ๋๋ก ์ ์ฉ์ด ์ ๋์๋ค. ์ด๊ฑธ๋ก ๊ฑฐ์ 1์๊ฐ ๋๊ฒ ๋ณด๋ด๋ค๊ฐ, ํ๋๊ฐ Zoom ๋ชจ๊ฐ์ฝ ๋ฐฉ์ ์ด์๊ธธ๋ ์ฐธ๊ฐํ๋ค. ๊ฑฐ๊ธฐ์ ํฐํธ ์ ์ฉํ์ ๋ถ์ด ์๋์ง ์ง๋ฌธํ๋๋ฐ ์ฝ๋ผ๊ฐ ์ ์ฉํ๋ค๊ณ ํด์ ๊ฒ๋ํ์ด์์ ํจ๊ป ์์ธ์ ์ฐพ์๊ฐ๋ดค๋ค.
reset css๋ ์ ๊ฑฐํด๋ณด๊ณ , ๊ฐ๋ฐ์ ๋๊ตฌ Network ํญ๋ ์ดํด๋ณด๊ณ ๋ค์ํ ์๋๋ฅผ ํ์ง๋ง ๊ฒฐ๊ตญ ์์ธ์ ์ฐพ์ง ๋ชปํ๋ค.
GlobalStyle ๋ด๋ถ์์ @import url๋ก ํ๋ฉด ์ ๋์๊ณ , index.css์ ์ ์ฉํ๋ ๋์๋ค. Font ํ๋ ๋๋ฌธ์ index.css๋ฅผ ๋ง๋๋ ๊ฒ ์ ๋ง๋ ์น ์์์ง๋ง ์ง๊ธ์ผ๋ก์จ๋ ํฐํธ๋ฅผ ์ ์ฉํ๋ ค๋ฉด ์ด ๋ฐฉ๋ฒ๋ฐ์ ์์ด์ ์ด๋ ๊ฒ ํด์ผ ํ๋ค.
๊ทธ๋ฐ๋ฐ ์ด์ํ ์ ์ ์ฝ๋ผ๋ GlobalStyle์ ํ๋๋ฐ๋ ์ ๋์๋ ๊ฒ์ด๋ค. ํน์ ์คํ ๋ฌธ์ ์ผ๊น ํ๋๋ฐ ๊ทธ๊ฑด ์๋์๋ค.
์ฝ๋ผ์ ์์ธ์ ์ฐพ์๊ฐ๋ฉด์ ๋ฌธ์ ์ ์์ธ์ ํ์ ํด ๋๊ฐ๋ ์์ธ๋ฅผ ๋ง์ด ๋ฐฐ์ ๋ค. ํฌ๊ธฐํ์ง ์๊ณ ๋ค๋ฐฉ๋ฉด์ผ๋ก ์ฐพ์๋ณด๋ฉฐ ์ ๊ทน์ ์ผ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๋ ํ๋๊ฐ ๋งค์ฐ ์ข๋ค๊ณ ์๊ฐํ๋ค. ์ด๊ฒ ๋ง๊ณ ๋ ์ฝ๋ผ์ ์๋ฒฝ 2์๊น์ง ๊ฐ๋ฐ ๊ด๋ จ ์๋ค๋ฅผ ๋ง์ด ํ๋๋ฐ ์ง์ ์ธ ์๊ทน์ ๋ง์ด ๋ฐ์ ์ ์์๋ค.
์์ฆ ๋ค์ด ์ปดํจํฐ๋ฅผ ๊ฐ์ ์ข ๋ฃํ๋ ์ผ์ด ์ฆ์์ก๋ค. VS Code, Zoom, Gather town, Figma ๋ฑ๋ฑ ์ฌ๋ฌ ๊ฐ์ง๋ฅผ ํ๊บผ๋ฒ์ ๋์๋์ผ๋ฉด ๋ ธํธ๋ถ์ด ๋ฒ๊ฑฐ์ํ๋ค. ํฌ๋งท์ ํ ๋ฒ ํ๋ฉด ๋ ๋์์ง๊น? ๊ณ ๋ฏผ์ด ๋๋ค.
'What I learned > CodeSquad Log' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
CodeSquad Day 86 : Project 3 - Day 6 (0) | 2022.05.17 |
---|---|
CodeSquad Day 85 : Project 3 - Day 5 (0) | 2022.05.15 |
CodeSquad Day 83 : Project 3 - Day 3 (0) | 2022.05.12 |
CodeSquad Day 82 : Project 3 - Day 2 (0) | 2022.05.11 |
CodeSquad Day 81 : Project 3 - Day 1 (0) | 2022.05.10 |