๐จ๐ปโ๐ป 2์ฃผ๊ฐ ํ๋ก์ ํธ๋ฅผ ๋ง์น๊ณ ..
์ํด๋ฆฌ ํ์ดํผ ๋ฏธ์
์ ์ ์ ์ค๋จํ๊ณ ๊ธฐ์ด ํ๋ก์ ํธ๋ฅผ ๋๋ด๊ณ ์์ผ ์์ฑํ๊ฒ ๋์๋ค.
ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด์ ์ด๊ฒ ๊ธฐ์ดํ๋ก์ ํธ๊ฐ ๋ง๋? ์ถ์๋ค.
ํ์ง๋ง ํ๋ก์ ํธ๋ฅผ ๋๋ธ ํ ํ์ฌ ๋๋ ์ผ๋ง๋ ์ฑ์ฅํ๋๊ฐ?
ํ๋ก์ ํธ๋ฅผ ๋ง์น๊ณ ๋๋ ์์ ์๊ฒ ๋ฆฌ์กํธ๋ฅผ ์ ๋ค๋ฃฐ์ ์๋ค!๊น์ง๋ ์๋๊ฒ ๊ฐ๋ค.
์ด๋์ ๋ ์ฝ๋ํ๋ฆ์ ํด์ํ ์ ์์์ ๋?..
๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ฐ๋
์ ๋ํด ํ์ต์ ํ๋ค๋ฉด ํ์ต ๋ด์ฉ์ ์ดํดํ ์ ์์์ ๋? ์์ค์ธ๊ฒ ๊ฐ๋ค.
๊ทธ๋ ๋ค. ์ฆ, ํ์ฐธ ๊ณต๋ถํ ๋๋ค.
ํ๋ก์ ํธ๋ฅผ ๋ง์น๊ณ 8์ฃผ์ฐจ , 11์ฃผ์ฐจ ์ํด๋ฆฌ ํ์ดํผ ๋ฏธ์
์ ๋ฐ์๋ค.
8์ฃผ์ฐจ ์ํด๋ฆฌ ํ์ดํผ ๋ฏธ์
์ ์๋ 2๊ฐ์ง ์ฃผ์ ๋ฅผ ์ ์ํด ์ฃผ์๋ค.
๋ณธ์ธ์ด ์๊ฐํ๋ CSS-in-JS์ ์ฅ์ ๊ณผ ๋จ์ ์ ์ค๋ช ํด ์ฃผ์ธ์.
์ด๋ฆ์์ ์ ์ถํ ์ ์๋ฏ์ด CSS-in-JS๋ฅผ ์ฌ์ฉํ๋ฉด ์๋ฐ์คํฌ๋ฆฝํธ ๋๋ ํ์ ์คํฌ๋ฆฝํธ ์ฝ๋์์ ์ง์ CSS๋ฅผ ์์ฑํ์ฌ ๋ฆฌ์กํธ ์ปดํฌ๋ํธ ์คํ์ผ์ ์ง์ ํ ์ ์๋ค.
JavaScript ๋ณ์์ ํจ์๋ฅผ ์คํ์ผ ๋ด์์ ์ฌ์ฉํ ์ ์๋ ๊ธฐ๋ฅ, props์ ๋ฐ๋ผ ๋์ ์ผ๋ก ์คํ์ผ์ ์ ์ฉํ ์ ์๋ ๊ธฐ๋ฅ ๋ฐ ์คํ์ผ์ ์ปดํฌ๋ํธ๋ก ํ์ ํ์ฌ ์ด๋ฆ ์ถฉ๋๊ณผ ํน์ ์ฑ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ ๊ธฐ๋ฅ ๋ฑ ์ฌ๋ฌ ๊ฐ์ง ์ด์ ์ ์ ๊ณตํด์ค๋ค.
CSS-in-JS์ ๊ฐ์ฅ ํฐ ์ฅ์ ์ค ํ๋๋ ์ปดํฌ๋ํธ ๊ธฐ๋ฐ ์คํ์ผ๋ง์ ๋ค๋ฃฐ ์ ์๋ค๋ ๊ฒ์ด๋ค.
๋ํ JavaScript์ ์ ์ฌํ ๊ตฌ๋ฌธ์ผ๋ก ์คํ์ผ์ ์์ฑํ๋ฉด ํนํ JavaScript ๋ฌธ๋ฒ์ ์ต์ํ ๊ฐ๋ฐ์์ ๊ฒฝ์ฐ ๊ฐ๋
์ฑ๊ณผ ์ ์ง ๊ด๋ฆฌ์ฑ์ด ํฅ์๋ ์ ์๋ค. ์ด๋ ๋ณด๋ค ์์ง๋ ฅ ์๊ณ ์ดํดํ๊ธฐ ์ฌ์ด ์ฝ๋๋ฒ ์ด์ค๋ก ์ด์ด์ง ์ ์๋ค.
CSS-in-JS๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํด์ผํ๋ค. ์ฉ๋์ด ์ผ๋ง ๋์ง ์์ง๋ง์ค์น ํจ์ผ๋ก์ ๋ฒ๋ค ํฌ๊ธฐ๊ฐ ์ฆ๊ฐํ๋ค.
์ปดํฌ๋ํธ ๋ด์์ ์์๋ค์ ์ง์ ํ์ฌ ์คํ์ผ์ ์ ์ธํ ์ ์ปดํฌ๋ํธ ๋ด์ ์ฝ๋ ๊ธธ์ด๊ฐ ๊ธธ์ด์ง ์ ์๋ค.
CSS-in-JS๋ ๋ํ์ ์ผ๋ก styled-component
Eomotion
๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์กด์ฌํ๋ค.
๐ก Reference
CSS-in-JS
Presentational & Container ๋์์ธ ํจํด์ ๋ํด ์ค๋ช ํด ์ฃผ์ธ์.
Presentational
์ปดํฌ๋ํธ ํน์ง:UI ์ค์ฌ ์ฝ๋: UI๋ฅผ ํํํ๊ณ ์ด๋ป๊ฒ ๋ณด์ผ์ง์ ์ง์ค.
์์ ํจ์: ์ฃผ๋ก ์์ํ๋ฉฐ ์ธ๋ถ์์ props๋ฅผ ํตํด ์ํฅ์ ๋ฐ์.
์ฌ์ฌ์ฉ์ฑ ๊ฐ์กฐ: ๋จ์ํ๊ฒ UI๋ฅผ ํํํ๋ฏ๋ก ์ฌ์ฌ์ฉ์ฑ์ด ๋์.
๋
๋ฆฝ์ ์ธ ๋์: ๋ค๋ฅธ ๋งฅ๋ฝ๊ณผ ๋
๋ฆฝ์ ์ผ๋ก ์ผ๊ด๋ ๋์์ ํจ.
์๊ฐ์ ์ํ๋ง ์ฒ๋ฆฌ: UI์ ์ํ๋ง ๋ค๋ฃจ๊ณ ๋ก์ง์ ํฌํจํ์ง ์์.
Container
์ปดํฌ๋ํธ ํน์ง:๊ธฐ๋ฅ ์ค์ฌ ์ฝ๋: ๋ฐ์ดํฐ ๊ด๋ฆฌ ๋ฐ ๊ธฐ๋ฅ ๊ตฌํ์ ์ค์ .
๋น์์ ํจ์: ์ธ๋ถ ๋งฅ๋ฝ์ ์ํฅ์ ๋ฐ์ ๋์ ์ผ๋ก ๋์ํจ.
๋ค๋ฅธ ๋งฅ๋ฝ์ ์ํฅ: ์ธ๋ถ ์ํ, ๋ผ์ดํ์ฌ์ดํด ๋ฑ์ ์ํฅ์ ์ค ์ ์์.
Presentational ์ปดํฌ๋ํธ ํ์ฉ: Presentational ์ปดํฌ๋ํธ์๊ฒ props๋ฅผ ์ ๋ฌํ์ฌ UI๋ฅผ ์ฌ์ฉ.
์ฝ๋์ โ๊ด์ฌ์ฌโ ๋ถ๋ฆฌ: UI์ ๊ธฐ๋ฅ์ ๋ถ๋ฆฌํ์ฌ ์ ์ง๋ณด์์ฑ์ ๋์.
์ด๋ฌํ ํจํด์ React Hook ๋์ ์ดํ Container ์ปดํฌ๋ํธ์ ์ญํ ์ด Hook์ผ๋ก ๋์ฒด๋๊ธฐ๋ ํ๋ฉฐ, ์ฝ๋์ ์ ์ฐ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ๋์ด๋ ๋ฐ ๊ธฐ์ฌํจ.
๐กReference
code-it
ChatGPT