Daily/Today I Learned
200220_TIL
joooing
2021. 2. 21. 03:17
๋ฐ์ํ
๐ ์ค๋ ํ ์ผ
โ๏ธ Hooks๋ก CMarket๋ง๋ค๊ธฐ
๋ผ์ฐํ ๊น์ง๋ง ๊ตฌํ๋์ด์๋ ์ผํ ์ฑ์ธ C market์ ์์ฑํ๋ ์คํ๋ฆฐํธ์๋ค. ์ํ ํ์ด์ง์์ ์ฅ๋ฐ๊ตฌ๋์ ๋ด๊ธฐ ๋ฒํผ์ ๋๋ฅด๋ฉด, ์ฅ๋ฐ๊ตฌ๋ ํ์ด์ง์ ํด๋น ์ํ์ด ๋ด๊ธฐ๊ณ , ๋๋ค์ ๋๋ฅด๋ฉด ์๋๋ง ์ฌ๋ผ๊ฐ๋๋ก Hooks๋ฅผ ์ด์ฉํด์ ๊ตฌํํ๋ค. ๊ทธ๋ฆฌ๊ณ ์ฅ๋ฐ๊ตฌ๋์์ ์๋์ ๋๋ฆฌ๊ณ ์ค์ผ์๋ ์๊ฒ ํ๊ณ , ์ญ์ ๋ฒํผ์ ๋๋ฅด๋ฉด ํ๋ฒ์ ์ญ์ ๋๋๋ก ๋ง๋ค์๋ค. ๋ด๊ฐ ์ฒ์๋ถํฐ ๋ง๋ค๋ฉด ๋ด ๋ง์๋๋ก ํจ์๋ช ๊ณผ ๋ณ์๋ช ์ ์ง๊ณ , ๋ฐ์ดํฐ ํ๋ฆ์ ๊ตฌ์ฑํ์ํ ๋ฐ ํจ์๋ช ๊ณผ ๋ณ์๋ช ์ด ์ด๋ฏธ ์ด๋์ ๋ ์ ํด์ ธ์๋ ์ํ์์ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ค๋ณด๋๊น ์คํ๋ ค ํ์ผ์ ํ์ ํ๋๋ฐ ์๊ฐ์ ๋ง์ด ์๊ฒ ๋์๋ ๊ฒ ๊ฐ๋ค. ๊ทธ๋์ ํผ์ํ์ง๋ง ๋ญ๊ฐ ํ์ ์ ํ๋ ๋๋์ด ๋ค๊ธฐ๋ ํ๊ณ ๋ค๋ฅธ ์ฌ๋์ด ์ง๋์ ์ฝ๋๋ฅผ ์ฝ๊ณ ํ์ ํ๋ ์ฐ์ต๋ ๋ ๊ฒ ๊ฐ๋ค.
โ๏ธ React - ๋ด์ค์ฑ ๋ง๋ค์ด๋ณด๊ธฐ
Hooks์ ๋ด์คAPI, react-router-dom ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ด์ฉํด์ ์นดํ ๊ณ ๋ฆฌ ๋ณ๋ก ๋ด์ค๋ฅผ ๊ตฌ๋ณํด ๋ณด์ฌ์ฃผ๋ ๊ฐ๋จํ ๋ด์ค ์ฑ์ ๋ง๋ค์ด๋ดค๋ค. ๋ด์ค API๋ฅผ axios์ async/awiat๋ฅผ ์ฌ์ฉํด ๋น๋๊ธฐ๋ก ๋ฐ์์ค๊ณ , ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ๋ฐ์์ค๊ธฐ ์ ๊น์ง๋ ๋ก๋ฉํ์ด์ง๊ฐ ๋จ๋๋ก ํ๋ค. ๋ฐ์ดํฐ์ ์นดํ ๊ณ ๋ฆฌ๋ ํจ๊ป ์์ด์ url์ ์ฟผ๋ฆฌ๋ถ๋ถ๊ณผ ์นดํ ๊ณ ๋ฆฌ๋ฅผ ์ผ์น์ํค๋ ์์ผ๋ก ๊ตฌ๋ถ๋ ํ ์ ์์๋ค. ์ ์ ์ด์ฉ๋ค๊ฐ location ๊ฐ์ฒด์ ๋ํด ์๊ฒ๋ ์ ์ด ์์๋๋ฐ ๊ฒฝ๋ก๋ฅผ ํ์ ํ ๋ ์ด ๊ฐ์ฒด๋ฅผ ์ง์ ํ์ฉํด๋ณผ ์ ์๊ธฐ๋ ํด์ ์ฌ๋ฐ์๋ค.
โ๏ธ Redux ๊ฐ๋
๊ธฐ์กด์๋ ์ํ ๊ด๋ฆฌ๋ฅผ ํ๋ ค๋ฉด ์ปดํฌ๋ํธ ๋ด๋ถ์์ ํ๊ณ , ์๋ก ์ ๋ฌํ๊ณ ๋ฐ๊ณ ..์ฐ๊ฒฐ์์ผ์ฃผ๊ณ .. ๋ฒ๊ฑฐ๋ก์ด ์์ ์ ํด์ผ๋ง ํ๋ค. ํ์ง๋ง Redux๋ฅผ ์ฐ๋ฉด ์ํ๊ด๋ฆฌ๋ฅผ ์ปดํฌ๋ํธ ๋ฐ๊นฅ์์ ํ ์ ์๊ฒ ๋๋ค. ์ง์ ์จ๋ณด์ง๋ ์๊ณ ์ค๋์ ๊ฐ๋ ๋ค์ ์ญ ํ์ด๋ดค๋ค. ์ผ๋จ ๋ฆฌ๋์ค๋ฅผ ์ ์ฉ์ํค๋ฉด ์ํ ๊ด๋ จ ๋ฐ์ดํฐ๋ค์ด ๋ชจ๋ ๋ด๊ธด '์คํ ์ด'๋ผ๋๊ฒ ์๊ธด๋ค. ์ปดํฌ๋ํธ๋ค์ ์ํ๋ฅผ ๋ชจ๋ ์ฌ๊ธฐ์ ๊ด๋ฆฌํ๋ ๊ฒ์ด๋ค. ๊ทธ๋ฆฌ๊ณ ์ ์ํ๊ฐ ์๊ธฐ๋ ๊ณผ์ ์ ๊ณต์์ฒ๋ผ ์์๋ฌ์ผ ํ๋ค๊ณ ํ๋ค. Action๊ฐ์ฒด → Dispatch์๊ฒ ์ ๋ฌ → Reducerํธ์ถ → ์๋ก์ด state์์ฑ! ์ด๋ฐ ๊ณผ์ ์ ๊ฑฐ์น๋๋ฐ ๋์ถฉ ๋๋๋ง ์ ๊ฒ ๊ฐ์์ ์ผ๋ฅธ ์ง์ ํด๋ณด๋ฉด์ ์ ๋๋ก ์์์ผ๊ฒ ๋ค.
๐ ๊ธฐ์ตํ ๊ฒ
โ๏ธ <picture /> ํ๊ทธ
background-image๊ฐ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ธ์ค ์์๋๋ฐ ์๋์ด์ ์ฝ๊ฐ ์ถฉ๊ฒฉ์ ์ด์๋ค.. img๋ picture ํ๊ทธ์ object-fit ์์ฑ์ ๋์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ฐ์ํ ์ด๋ฏธ์ง๋ฅผ ๋ง๋ค๊ธฐ์๋, ์ต์ ํ๋ฅผ ์ํด์๋ ์ข๋ค๊ณ ํ๋ค. ์ฝํ ์ธ ์ด๋ฏธ์ง๋ฅผ ์ฅ์์ด ์๋ ์๋ฏธ์๋ HTML ์ปจํ ์ธ ์ด๋ฏธ์ง ์์๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด img, picture ํ๊ทธ๋ฅผ ์ฐ์!
โ๏ธ JSON.stringify ์ต์
JSON.stringify(value[, replacer[, space]])
space : ๊ฐ๋ ์ฑ ๋ชฉ์ JSON ๋ฌธ์์ด ์ถ๋ ฅ์ ๊ณต๋ฐฑ์ ์ฝ์ ํ๋๋ฐ ์ฌ์ฉ๋๋ String ๋๋ Number ๊ฐ์ฒด
- Number๋ฉด ๊ณต๋ฐฑ์ผ๋ก ์ฌ์ฉ๋๋ space ์, 1~10๊ฐ
- String์ด๋ฉด ๊ทธ ๋ฌธ์์ด์ด ๊ณต๋ฐฑ์ผ๋ก ์ฌ์ฉ๋จ
โ๏ธ styled-components ๋ผ์ด๋ธ๋ฌ๋ฆฌ
Javascript ์์ CSS๋ฅผ ์์ฑํ ์ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ๋ฐ, template literal์ ์จ์ ์ค๊ฐ์ค๊ฐ ๊ฐ๋จํ ์กฐ๊ฑด์๊ฐ์ ๊ฒ๋ ๋ฃ์ ์ ์๊ณ , ์ปดํฌ๋ํธ์ ์์ฑ์ ์ฝ์ด์ฌ ์๋ ์๋ค. const Component = styled` background-color: ${props => props.color}; `; ์ด๋ฐ์์ผ๋ก! ์ง์ง CSS + Javascript๋ผ ๊ฐ๋จํ ์์ฑ์ ์ด๊ฑธ๋ก ์ง์ ํด๋ ๋ฐ๋ก CSSํ์ผ์ ์ฐ์ง ์์ ์ข์ ๊ฒ ๊ฐ๋ค.
๐ ๋ ๊ณต๋ถํ ๊ฒ
โ๏ธ Redux ์์ ์ฐพ์๋ณด๊ธฐ, ๋ธ๋ก๊น
๋ฐ์ํ