๐ ๋ค์ด๊ฐ๋ฉฐ React์์ ์ฑ๋ฅ์ ์ต์ ํํ๊ธฐ ์ํด ์ฌ์ฉํ ์ ์๋ React.memo์ ๋ํด ์๊ฐํ๊ณ , ๊ธฐ๋ฅ์ ์ด๋ค ์ํฉ์์ ์ ์ฌ์ฉํ๊ณ ๋์์๋ฆฌ์ ์ฌ์ฉ ์์ ์ฝ๋๋ ํจ๊ป ์์๋ณด๊ฒ ์ต๋๋ค. React.memo๋ โ memo๋ฅผ ์ฌ์ฉํ๋ฉด ํด๋น ์ปดํฌ๋ํธ์ props๊ฐ ๋ณ๊ฒฝ๋์ง ์์ ๊ฒฝ์ฐ ๋ฆฌ๋ ๋๋ง์ ๊ฑด๋๋ธ ์ ์์ต๋๋ค. ์ฆ, ๋ฉ๋ชจํ๋ ๋ฒ์ ์ ์ปดํฌ๋ํธ๋ก ํด๋น ์ปดํฌ๋ํธ์ props๊ฐ ๋ณ๊ฒฝ๋ ๋๋ง ๋ฆฌ๋ ๋๋ง์ ํ ์ ์์ต๋๋ค. ์ปค๋ค๋ ํ๋ชจ์ ์ปดํฌ๋ํธ๋ ๋ณต์กํ ์ํฉ์์ ๋ถํ์ํ ๋ฆฌ๋ ๋๋ง์ ๋ง์ ์ฑ๋ฅ์ ์ต์ ํํ ์ ์์ต๋๋ค. ๋์ ์๋ฆฌ ๐ก React.memo๋ ์ธ์๋ก ๋ค์ด๊ฐ ์ปดํฌ๋ํธ์ ์ด๋ค props๊ฐ ์ ๋ ฅ๋๋์ง ํ์ธํ๊ณ ์ ๋ ฅ๋๋ ๋ชจ๋ props์ ์ ๊ท ๊ฐ์ ํ์ธํ ๋ค ์ด๋ฅผ ๊ธฐ์กด์ props์ ๊ฐ๊ณผ ๋น๊ตํ๋๋ก ๋ฆฌ์กํธ์๊ฒ ์ ..
๐ ๋ค์ด๊ฐ๋ฉฐ React + Typescript ํ๊ฒฝ์์ React Testing library์ jest๋ฅผ ์ด์ฉํด์ ํ ์คํธ ์ฝ๋ ์์ฑ์ ๋ํด์ ๊ณต๋ถํ๋ ค๋ ๋์ค์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ณ , ๊ฒฐ๊ณผ์ ์ผ๋ก ํด๊ฒฐํ๊ธฐ ์ํด ํด์ผ ํ ๊ฒ์ ๋ณ ๊ฑฐ ์๋์์ง๋ง ํ๋ค๊ฒ(?) ํด๊ฒฐ ๋ฐฉ์์ ์ฐพ์์ ๊ธฐ๋ก์ ํด๋๋ ค๊ณ ํ๋ค. 1. ๋ฌธ์ ๋ฐ์ CRA typescript๋ก ํจํค์ง๋ค์ ์ค์นํ๊ณ ๋ ํ์ npm test ๋ช ๋ น์ด๋ฅผ ํตํด์ ๊ธฐ๋ณธ์ ์ผ๋ก ์์ฑ๋์ด ์๋ ํ ์คํธ ์ฝ๋๋ค์ด ์ ์คํ์ด ๋๋์ง ํ์ธ์ ํด๋ดค๋ค. ํ์ง๋ง ReactDOM.render is no longer supported in React 18 ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค. ํ ์คํธ ์ฝ๋ ์์ฒด๋ PASS๊ฐ ๋๋ฉด์ ์ ์คํ์ด ๋์์ง๋ง ์์ ๊ฐ์ ์ค๋ฅ ๋ฉ์์ง๊ฐ ๋งค์ฐ ์ ๊ฒฝ ์ฐ์๋ค. 2. ๋ฐ์ ์์ธ Rea..
๐ ๋ค์ด๊ฐ๋ฉฐ React๋ฅผ ์ฒ์ ํ์ตํ๋ ์์ , Redux๊ฐ ๋ฌด์์ธ์ง, ๊ทธ๋ฆฌ๊ณ ์ ํ์ํ์ง์ ๋ํ ๋ช ํํ ์ดํด ์์ด 'Redux๋ฅผ ์ ๋ฐฐ์์ผ ํ๋์ง'์ ๋ํด ์๋ฌธ์ ๊ฐ๊ณค ํ์ต๋๋ค. ํ์ง๋ง, React๋ฅผ ์ด์ฉํ์ฌ ํด๋ก ์ฝ๋ฉ์ ํ๊ฑฐ๋ ์ค์ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ณ ์ ํ๋ ์ปดํฌ๋ํธ๊ฐ ๋ฉ๋ฆฌ ๋จ์ด์ ธ ์์ด ์์ ์ปดํฌ๋ํธ์๊ฒ ๋ถํ์ํ๊ฒ ๋ง์ Props๋ฅผ ์ ๋ฌํด์ผ ํ๋ ์ํฉ(Props Driling)์ ๊ฒช๊ฒ ๋์์ต๋๋ค. ์ด๋ฐ ๊ฒฝํ์ ํตํด "์ ์ญ ์ํ ๊ด๋ฆฌ"์ ํ์์ฑ์ ์ฒด๊ฐํ๊ฒ ๋์์ต๋๋ค. ๊ทธ๋์ ์ด๋ฒ ํฌ์คํ ์์๋ Redux์ ๋ํด ์์๋ณด๋ ค ํฉ๋๋ค. Redux๋ โ Redux๋ JavaScript ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํ๋ ๋ฐ ๋์์ ์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. Redux๋ React์ ํจ๊ป ์ฌ์ฉ๋..
๐ ๋ค์ด๊ฐ๋ฉฐ ๋ฆฌ์กํธ๋ก ํ์ฝ ํ์์ ํด๋ก ์ฝ๋ฉํ๋ ํฌํธํด๋ฆฌ์ค๋ฅผ ์ ์ํ๋ฉด์ ๊ณต๋ถ ์ค์, Link (react-router-dom)์ ํด๋ฆญํ๋ฉด url์ ๋ณ๊ฒฝ์ด ๋์ง๋ง ์ปดํฌ๋ํธ๊ฐ ์ ๋ฐ์ดํธ๊ฐ ๋์ง ์์์ ์ ๋๋ก ๊ธฐ๋ฅ์ด ์๋ํ์ง ์๋ ๋ฌธ์ ๋ฅผ ๊ฒช์๋ค. ํด๊ฒฐํ๊ณ ๋๋๊น ์ ๋ง ๋ณ ๊ฒ ์๋์์ง๋ง...(๊ฐ๋ ๋ถ์กฑ) ๋ฌด์์ด ๋ฌธ์ ์ด๊ณ , ์ด๋ป๊ฒ ํด๊ฒฐํ๋์ง ๋ค์ ๋ณต์ตํ๊ธฐ ์ํด ์ ๋ฆฌํด๋ณธ๋ค. โ ๋ฌธ์ ๋ฌธ์ ์ ํ๋ฉด์ด๋ค. Detail ์ปดํฌ๋ํธ์์ ํด๋น ์ํ์ ๊ด๋ จ ์ํ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์์ ๋ณด์ฌ์ฃผ๋ ์ปดํฌ๋ํธ๋ค. Detail ์ปดํฌ๋ํธ์์ ๊ด๋ จ ์ํ๋ฅผ ๋ณด์ฌ์ค ๋ค, ๊ด๋ จ ์ํ๋ฅผ ํด๋ฆญํ๋ฉด ๊ทธ ๊ด๋ จ ์ํ์ Detail ์ปดํฌ๋ํธ๊ฐ ๋ ๋๋ง ๋๊ฒ ๊ตฌํํ๊ณ ์ถ์๋ค. ํ์ง๋ง ์ฌ์ง์ ๋ณด์ด๋ ๋ฐ์ ๊ฐ์ด ํด๋ฆญ์ ํ๋ฉด url์ ์ ๋ณ๊ฒฝ์ด ๋์ง๋ง ํด๋น ์ํ์ Deta..
๐ ๋ค์ด๊ฐ๋ฉฐ ์ต๊ทผ React๋ฅผ ๊ณต๋ถํ๋ ๋์ค์ react router๋ฅผ ์ค์นํด์ผ ํ๋ ์ํฉ์ด์์ต๋๋ค. react router๋ฅผ ์ค์น ํ๋๋ฐ, ๋ก๊ทธ์ npm error๊ฐ ์ฌ๋ฌ ๊ฐ ๋ฐ์ํ์ต๋๋ค. ๋ฆฌ์กํธ๋ก ์คํ ์ํค์ ์๋์ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค. ./src/App.js Module not found: Can't resolve './src/components/Navbar/Navbar' in '/Desktop/React_Components/test/src' Module not found: Can't resolve './node_modules/react' ๐ก ํด๊ฒฐ ๋ฐฉ๋ฒ create-react-app์ผ๋ก ๊ตฌ์ฑ๋ ๋ฆฌ์กํธ ํ์ผ์ ์๋์ ๊ฐ์ด ๋์ด์์ต๋๋ค. ํ๋ก์ ํธ ๋ด๋ถ์ ์๋ package-lock.json ๋๋ ..