Component UI ์ง๊ธ๊น์ง ์ฌ์ฉํด๋ณธ React UI ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ ๊ฐ์ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. ๋ํ์ ์ธ Component UI ๋ฐฉ์์ ๋๋ค. Antd MATERIAL-UI ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํด๋ณธ ์ฅ์ ์ผ๋ก๋ ๊ธฐ๋ณธ๊ฐ์ผ๋ก style์ด ์ง์ ๋์ด์๊ณ styled-componen
React์์ ์ ๊ณตํ๋ Portal์ UI๋ฅผ ์ด๋์์ ๋ ๋๋ง ์ํฌ์ง DOM์ ์ฌ์ ์ ์ ํํ์ฌ ๋ถ๋ชจ์ปดํฌ๋ํธ ๋ฐ๊นฅ์์ ๋ ๋๋ง ํ ์ ์๋๋ก ํด์ค๋๋ค.child (์ฒซ๋ฒ์งธ์ธ์) : ReactChildrencontainer (๋๋ฒ์งธ์ธ์) : DOM ์๋ฆฌ๋จผํธreactํ๋ก์ ํธ์ h
ํฑํํ ๋ง๋ค๊ธฐ > React ๊ณต์๋ฌธ์ ์์ต์์ ๋์์๋ ํฑํํ ๋ฅผ ํ์ ์คํฌ๋ฆฝํธ์ ํจ์ํ ์ปดํฌ๋ํธ๋ก ์์ ํ์ต๋๋ค. > > buildTool: React-Create-App style: styled-component type-check: TypeScript github :
์คํฌ๋กค ํผ์ผํธ ๊ตฌํ๊ธฐ > ์ด์ ๊ธ์๋ ์์์ ์ ๋์์น๋ฅผ ๊ตฌํ๋ ๊ธ์ ์ ์์ต๋๋ค. ์ด๋ฒ์๋ ํ์ฌ ๋ด๊ฐ ์ผ๋ง๋ ์คํฌ๋กค์ ํ๋์ง ํผ์ผํธ๋ฅผ ๊ตฌํ๋ ๋ฐฉ๋ฒ์ ๋๋ค! > ( ์คํฌ๋กค ๋ ๋์ด+ ๋ณด๊ณ ์๋ํ๋ฉด(viewport)๋์ด ) / ์ ์ฒด๋ฌธ์๋์ด * 100 ํ์ฉํ๊ธฐ Element
์น ํ์ด์ง๋ฅผ ๋ง๋ค๋ค ๋ณด๋ฉด ํด๋น ์์์ ์ ๋์์น๋ฅผ ์ฐพ์์ผ ํ ๋ ์์ต๋๋ค,์ ๋์์น๋ฅผ ์ด์ฉํด ์คํ์ผ์ ๊พธ๋ฏธ๊ฑฐ๋ ๋ก์ง์ ๋ง๋ค๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.ํด๋น ์์๊ฐ ์น ํ์ด์ง๋ฅผ ๊ธฐ์ค์ผ๋กํ ์์น์ ๋๋ค.์คํฌ๋กค๋ ์ปจํ ์ธ ์ ๊ธธ์ด + Viewport ์๋์ขํ๋ฅผ ๊ตฌํ๋ฉด ์์์ ์ ๋์์น๋ฅผ
defaultProps React์์ props๋ฅผ ๋ฐ์์ค๋ ๋ฐฉ๋ฒ์ ๊ฐ๋จํฉ๋๋ค. ์ผ
main.tsx ProductList.tsx
๋ฒํผํด๋ฆญ์ผ๋ก ์ํ๋ ์ปดํฌ๋ํธ ๋ ๋๋งํ๋ ๋ฐฉ๋ฒ
useRef๋ React์์ ์ ๊ณตํ๋ hook ์ค์ ํ๋์ด๋ฉฐDOM์ ์ ๊ทผ ํ ์ ์๋๋ก ํ๋ ๊ธฐ๋ฅ์ ๊ฐ์ง hook์ด๋ผ๊ณ ๋ณด๋ฉด ๋๋ค.React์์ ์ ๊ณต์ ํด์ฃผ๋ hook์ด๊ธฐ ๋๋ฌธ์์ปดํฌ๋ํธ ์ต์๋จ์ react์ ๊ฐ์ด import๋ฅผ ํฉ๋๋ค.์ปดํฌ๋ํธ ๋ด ์๋จ์ useRef(
์คํ์ผ๋ง์ ํ๊ฒ๋๋ฉด ์ผ์ ํ ์คํ์ผ์ ๋ฐ๋ณตํ๊ฒ ์ฌ์ฉ ๋ ๊ฒฝ์ฐ๊ฐ ์๋ค.์์๋ก ์๋ ์ฝ๋๋ ์์ ํ ๋์ผํ ์คํ์ผ์ด ์ ์ฉ๋์ด ์๋ค.์ด๋ ๊ฒ ์์ ํ ๋๊ฐ์ ์คํ์ผ์ ์ฌ์ฉํด์ผ ํ๋ค๋ฉด ๊ฐ์ ์ฝ๋์ ์์ด 2๋ฐฐ๊ฐ ๋๋ค...์ฝ๋์ ์์ ์ค์ด๊ธฐ ์ํด style-component ์์๋ ๋๊ฐ
๋ฆฌ์กํธ์์ ์คํ์ผ์ ์ค ์ ์๋ ๋ฐฉ๋ฒ์ด ๋ ์๋ค.Style Component ๋ฅผ ์ฌ์ฉ ํ๋ ๋ฐฉ๋ฒ์ด๋ค!SASS๋ ์ข์์ง๋ง Style Component ๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๊ฐ ์๋ค.ํด๋์ค ์ด๋ฆ์ ์ค์ฒฉ์ ์ค์ฌ์คattribute ์ถ๊ฐ๊ฐ ๊ฐ๋ฅ์คํ์ผ์ props๋ฅผ ์ ์ฉ ํ ์ ์๋คS
์ด๋ฒ 1์ฐจ ํ๋ก์ ํธ๋ฅผ ํ๋ฉด์ ์๋ก ๋ฐฐ์ด๊ฒ์ด ์๋ค.๋ฐ๋ก API ์ฃผ์๋ฅผ JavaScriptํ์ผ์ ์๋ก ๋ง๋ค์ด ๋ณ์์ฒ๋ฆฌํด์ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค.์ด๋ฒ ํ๋ก์ ํธ๋ 3๋ช ์ ๋ฐฑ์๋ ๋ถ๋ค์ด ์์ด ์๋ฒ๋ฅผ ํ๋๋ก ํฉ์น๊ธฐ ์ ๊น์ง3๋ช ์ API ์ฃผ์๋ฅผ ๋ฐ๊พธ๋ฉด์ ๋ฐ์ดํฐ๋ฅผ ๋ง์ถฐ๋ด์ผ ํ๋ค.์ด ์ผ๋ง๋
SASS ๐จ > sass๋ css ์ ์ฒ๋ฆฌ๊ธฐ ์ ๋๋ค. sass ๋ฌธ๋ฒ์ด css๋ก ๋ณํํด์ฃผ๋ ๊ฒ! nesting, mixin, ๋ณ์ ๋ฅผ ์ด์ฉํด ์คํ์ผ์ํธ์ ์ ์ง๋ณด์์ ๊ฐ๋ ์ฑ์ ์ข๊ฒ ๋ง๋ค์ด ์ค๋๋ค. ์ค์น๋ฐฉ๋ฒ --save ๋ฅผ ์ ๋์ด์ ๋ package.json ์ค์น๋ ํจํค
์์๋ฐ์ดํฐ ๐จโ๐ป ์์๋ฐ์ดํฐ๋ ๋ณํ์ง ์๋ ๋ฐ์ดํฐ, UI ๊ตฌ์ฑ์ ํ์ํ์ง๋ง ๋์ ์ผ๋ก ๋ณํ์ง ์์์ ๋ฐฑ์๋ API๋ฑ์ ํตํด์ ๊ฐ์ ธ์ฌ ํ์๊ฐ ์๋ ์ ์ ์ธ ๋ฐ์ดํฐ 1๏ธโฃ ์์๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ฐ๋ณต์ ์ธ ๊ตฌ์กฐ๊ฐ ๋ณด์ผ ๋ ๋ฌ๋ผ์ง๋ ๋ถ๋ถ๋ค์ ๋ฐ์ดํฐ๋ฅผ ๋ฐฐ์ดํํ๋ก ๋ถ๋ฆฌ์์ผ
์ด๋ค ํจ์๊ฐ input / output์ด์ธ์ ๋ค๋ฅธ ๊ฐ์ ์กฐ์ํ๋ค๋ฉด, ์ด ํจ์๋Side Effect๊ฐ ์๋ค๊ณ ํํํฉ๋๋ค!ํจ์์ปดํฌ๋ํธ์์๋ ์ธ๋ถ์ธ๊ณ์ ์ํฅ์ ์ฃผ๋ ์ด๋ ํ ํ์์ ๋๋ค.๋ํ์ ์ผ๋ก Data Fetching, DOM์ ์ง์ ์ ๊ทผ(ex. Event Listener
๋๊ธ์ฐฝ ๊ตฌํํ๊ธฐ๐ ์ฐ์ ์์ ์ด ์์ ํด์ผ ๋ ํฐ ๊ทธ๋ฆผ์ ์๊ณ ์๋ ๊ฒ์ด ์ข๋ค๊ณ ์๊ฐํ๋ค! ๋๊ธ์ฐฝ์ ๊ตฌํ ํ๋ ค๋ฉด ์ด๋ค ์์ ์ ํด์ผํ ๊น! ๋๊ธ์ ๋ ฅ ๊ฐ ์ ์ฅ --> ๋๊ธ์ ๋ ฅ๊ฐ ์ ์ฅ๋ ๊ณณ ์ง์ --> ์ํฐ,ํด๋ฆญ์ ์ ๋ ฅ๊ฐ ์ถ๋ ฅ์ฅ์๋ก ์ด๋--> ๋๊ธ์ถ๋ ฅ ๋๊ธ์ ๋ ฅ ๊ฐ ์ ์ฅ ๋
์ฐ์ SPA ๋ผ๋ ๊ฐ๋ ์ ์์์ผํ๋ค!SPA๋ single page application ๋ ํ๋์ ํ์ด์ง๋ก ๊ตฌ์ฑ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋๋ค.์ด์ ์นํ์ด์ง ๊ฐ์ ๊ฒฝ์ฐ ํ์ด์ง์ ๊ฐ์๋ง๋ค HTML ํ์ผ์ด ์กด์ฌํ์ง๋งSPA๋ก ์์ ๋ ์นํ์ด์ง๋ ๋จ ํ ๊ฐ์ HTML๋ก ๊ตฌ์ฑ๋์ด์์ต๋๋ค!
React๐จโ๐ป ํ๋ก ํธ์๋ ๊ธฐ์ ์์ ๋น ์ง ์ ์๋ ๊ธฐ์ React ๋ฅผ ์ตํ๋ ์ฒซ ๋ ์ด๋ค! React๋ Javascript ์ฌ์ฉ์ ์ธํฐํ์ด์ค (UI) ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ผ๊ณ ๋ณด๋ฉด ๋๋ค. ํ๋ ์์ํฌ์ ์ฐฉ๊ฐ ํ ์ ์์ง๋ง ์์ฐํ ๋ค๋ฅด๋ค.