useEffect์ useRef๋ฅผ ์ฌ์ฉํ์ฌ ๋ ๋๋ง์ ์ด์ ๋ฅผ ๋ฐํ ์ ์์. memo๋ฅผ ์ฌ์ฉ ์ตํ์ ์๋จ์ผ๋ก useMemo์ฌ์ฉ react developers tool์์ ์ ๋ถ๋ค ์ด๋ก์ด๋ฉด ์ต์ ํ๊ฐ ๊ธํ์ง๋ ์์. ํ์ง๋ง ๋นจ๊ฐ์์ด๋ฉด ์ต์ ํ๋ฅผ ํด์ผํจ
react
๋ฆฌ์กํธ๋ก ๋ฐฐ์ด์ ๋ ๋๋ง ํ ๋ ๋ค์๊ณผ ๊ฐ์ ๋ฌธ๊ตฌ๋ฅผ ๋ง์ฃผ์น์ ์ ์ด ์๋์? Warning: Each child in a list should have a unique "key" prop. ๋ธ๋ผ์ฐ์ ์ฝ์์ ์ด๋ฌํ ๊ฒฝ๊ณ ๊ฐ ๋์ค๊ฒ ๋ฉ๋๋ค. ์ด๋ ๋ฆฌ์กํธ์์ ๋ฐฐ์ด์ ๋ ๋๋ง ํ ๋ ๋ ๋๋งํ ๋ฆฌ์คํธ๋ค์ ์ถ๊ฐ, ์ฝ์
, ์ญ์ ์ ๊ธฐ์ค์ Key Prop์ ์ด์ฉํด์ ํ๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ ์ ์ด์ฃผ์ง ์์์ ๋ํ๋๋ ์ค๋ฅ ์
๋๋ค. ์๋ฅผ๋ค์ด์ ์ํ๋ฆฌ๋ทฐ๋ค์ด ์๋ ๊ฒ์ํ์ด ์์ต๋๋ค. ๊ฐ๊ฐ์ ์ํ ๋ฆฌ๋ทฐ๋ค์ ๋ ๋๋ง ํ๋๋ฐ ๋ฐ๋ณต๋ฌธ์ผ๋ก ๋ ๋๋ง ํ ์ ์๊ฒ ์ฃ ? ์ด๋ key prop์ ์ง์ ํด์ฃผ์ง ์๊ณ ๋ฆฌ๋ทฐ์ ์๋ inputํ๊ทธ ์์ ํ
์คํธ๋ฅผ ์
๋ ฅํ๊ณ ๊ทธ ๋ฆฌ๋ทฐ๋ฅผ ์ญ์ ํ๋ค๋ฉด ์ด๋ป๊ฒ ๋ ๊น์? ๋ฆฌ๋ทฐ๋ ์ญ์ ๊ฐ ๋ ์ ์์ด๋ input ํ๊ทธ ์์ ํ
์คํธ๋ ๋ค๋ฅธ ..
1. UI๊ฐ ๋ณต์กํ ์๋ก DOM ์กฐ์์ด ๋งค์ฐ ๋ถํธํด์ง๋ค. ํ์ด์ค๋ถ ๊ฐ์ด UI๊ฐ ๋ง๊ณ ์ด๋ฒคํธ๋ ๋ง์ ์น์์๋ DOM ์กฐ์์ด ๋งค์ฐ ๋ณต์กํฉ๋๋ค. ๊ฐ๋ น ํ๊ทธ๋ฅผ ๋ง๋ค๊ณ ๊ทธ ์์ ์ปจํ
์ธ ์ ํด๋์ค ์ด๋ฆ์ ๋ฃ๋๋ค๊ณ ํ๋ฉด ๋ฒ์จ ์ฝ๋๊ฐ 3์ค ์ด์์
๋๋ค. ํํ ๋ช
๋ นํ ๋ฐฉ์์ด๋ผ๊ณ ํ์ฃ . ํ์ง๋ง ๋ฆฌ์กํธ๋ ์ปดํฌ๋ํธ๋ก ์ ์ธ์ ์ผ๋ก ์์ฑํ์ฌ ์ ์ง๋ณด์๊ฐ ํจ์ฌ ์ฝ์ต๋๋ค. 2. SPA 1๋ฒ์ ์ฐ์ฅ์ ์ผ๋ก์ SPA๋ฅผ ์ฐ๋ฉด DOM์กฐ์์ด ๋งค์ฐ ๋น๋ฒํ๊ฒ ์ผ์ด๋๋๋ฐ ์ด๋ ๋ฐ๋๋ผ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ด์ฉํด ๊ตฌํํ์ฌ ๋งค์ฐ ๋ณต์กํด์ง๋๋ค. ๋ฐ๋ผ์ ๋ฆฌ์กํธ๋ก ์ฝ๊ฒ SPA๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. 3. ์ ๋ก์ด๊ฐ์๋ฅผ ์ฐธ๊ณ ํ์๋ฉด ํ์ด์ค๋ถ ์น์์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๊ฟจ๋๋ ์ ์ฉ์ด ์๋๋ ๋ถ๋ถ์ด ์์๋ค๋ ๊ฒ์
๋๋ค. ์๋ฅผ๋ค์ด ๋๋ค์์ ๋ฐ๊ฟจ๋๋ฐ ๋ด ํ๋กํ์๋ ์ ๋๋ก ๋ณ๊ฒฝ๋ ๋๋ค์์ด ๋ณด์ฌ์ง๊ณ ..
์์ค์ ๋ง์ ๋ฆฌ์กํธ ๊ฐ์๋ค์ ๋๋ถ๋ถ์ CRA๋ถํฐ ์ฌ์ฉํ์ฌ webpack์ ๋ํ ์ค์ ๊ณผ ๋ฐ๋ฒจ์ ๋ํ ์ค์ ์ ๊ฐ๋ฅด์น์ง ์๊ณ ๋ฐ๋ก ๋ฆฌ์กํธ์ ํต์ฌ ๊ธฐ๋ฅ๋ค์ ์ค๋ช
ํ๋ค. ๋๋ ์ฒ์์ ์ด๋ฌํ ๊ฐ์์ ๋ถ๋ง์ ๋๊ผ๊ณ ํผ์ ๊ตฌ๊ธ์์ CRA์์ด ๋ฆฌ์กํธ ํ๋ก์ ํธ ๋ง๋๋ ๋ฒ์ ์ฐพ์์๋ค. ์ด๋ฐ ๊ฐ์๋ค์ ๊ทธ์ ๋ฆฌ์กํธ์ ๊ธฐ๋ฅ๋ค์ ๋์ดํ์ฌ ๊ฐ๋ฅด์น๊ฒ ๋ค๋ ๊ฑฐ๊ณ ๊ทธ๋ ๋ค ๋ณด๋ ๊ฐ์๋ฅผ ๋ค์๋ค ํ ์ง๋ผ๋ ์ฐจํ์ ๊ฐ์๋ฅผ ๋ณด๊ณ ์ป์ ์ง์์ผ๋ก ๋ง๋ ํ๋ก์ ํธ์ ํ๋ฆฌํฐ๊ฐ (์ฌํ๊ฒ ๋งํ์๋ฉด)๋งค์ฐ ๊ตฌ๋ ธ๋ค. ๊ทธ๋ฆฌ๊ณ .. ๊ทธ๊ฑด ๋ฐ๋ก ๊ธฐ๋ณธ์ ์ ๋ค์ ธ์ ๊ทธ๋ ๋ค. ๋ฆฌ์กํธ์์ state๊ฐ ๋ญ์ง ์ ๋๋ก ์ดํดํด์ผ ํ๋๋ฐ ๋จ์ ๊ธฐ๋ฅ๋ง์ ์ค๋ช
ํ๋ ๊ฐ์์์๋ ๊ทธ๋ฐ ์ข
๋ฅ์ ์ต๋์ ๋ถ๊ฐ๋ฅ ํ๋ค. ๊ทธ ์์ค์ ๋๋ ์ ๋ก์ด๊ฐ์๋ฅผ ์๊ฒ๋์๋ค ์นํฉ ์ค์ ์ ๊ฐ๋ฅด์น๋ค๋!! ์ฌ๊ธฐ์ ๋ถํฐ ๋ค๋ฅธ ๊ฐ์..
npm init react-app . ์์ ๊ฐ์ด ํฐ๋ฏธ๋์ ์
๋ ฅํ๋ค. ์ฌ๊ธฐ์ ' . " ์ ํ์ฌ ๋๋ ํฐ๋ฆฌ๋ฅผ ์๋ฏธํ๋ค. create-react-app ์ ์ค์นํ ๊ฑฐ๋๊ณ ๋ฌผ์ด๋ณธ๋ค. y๋ฅผ ์
๋ ฅํ๋ฉด ๋๋ค. ์ด ๊ณผ์ ์ ๋๋ด๋ฉด ์๋์ ๊ฐ์ด ์ฌ๋ฌ ํด๋ ๋ฐ ํ์ผ๋ค์ด ์๋์ผ๋ก ์๊ธด๋ค.
1. npm run build ์คํ!! 2. ์๋์ ๊ฐ์ด package.json ์ ์ถ๊ฐ ์์์ dist ํ์ผ์ ์ง์ ํด์ค build ํด๋์ ๊ฒฝ๋ก 3. github pages ์ค์น npm install gh-pages --save-dev 4. ๋ค์ package.json ์ถ๊ฐ "deploy": "gh-pages -d build" ๋์ ๊ฒฝ์ฐ๋ build๋ฅผ dist๋ก ๋ฐ๊พธ์๋ค. 5. npm run deploy ์คํ npm run deploy 6. ์์ ๊ฐ์ด gh-pages๊ฐ ๋ง๋ค์ด์ก์ผ๋ pages์์ gh-pages ๋ธ๋ฐ์น๋ฅผ ์ ํ! 7. ํธ์คํ
์๋ฃ!! 8. reference https://velog.io/@heony/gh-pages gh-pages๋ก ๋ด React ์น์ฌ์ดํธ ๋ฐฐํฌํ๊ธฐ GitHub ๋ ํฌ์งํ ๋ฆฌ์ ..
1. ๋ฆฌ์กํธ๋ฅผ ์ฌ์ฉํ๊ณ ์ถ์ ํ๋ก์ ํธ์ ๋๋ ํฐ๋ฆฌ์ ๋ค์ด๊ฐ๋ค. 2. ์๋์ ๋ช
๋ น์ด๋ฅผ ํตํด ๋
ธ๋ ํ๋ก์ ํธ๋ฅผ ์์ฑ-์ด๊ธฐํ ํ๋ฉฐ package.json์ ๋ง๋ ๋ค npm init -y 3. JSX ์ปดํ์ผ์ ์ํ Babel์ ์ค์นํ๋ค. npm install --save-dev @babel/core babel-loader @babel/cli @babel/preset-env @babel/preset-react babel-loader๋ ์นํฉ๊ณผ ๊ฐ์ด ์ฌ์ฉํ๊ธฐ ์ํด ๋ค์ดํด์ค๋ค. 4. Webpack ์ค์น npm install --save-dev webpack webpack-cli webpack-dev-server 5. htmlWebpackPlugin ์ค์น npm install --save-dev html-webpack-plu..