๐Ÿ’ป์šฉ๋‡ฝ ๊ฐœ๋ฐœ ๋…ธํŠธ๐Ÿ’ป
article thumbnail
[React] ์„ฑ๋Šฅ ์ตœ์ ํ™” React.memo์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ธฐ

๐Ÿ“– ๋“ค์–ด๊ฐ€๋ฉฐ React์—์„œ ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” React.memo์— ๋Œ€ํ•ด ์†Œ๊ฐœํ•˜๊ณ , ๊ธฐ๋Šฅ์„ ์–ด๋–ค ์ƒํ™ฉ์—์„œ ์™œ ์‚ฌ์šฉํ•˜๊ณ  ๋™์ž‘์›๋ฆฌ์™€ ์‚ฌ์šฉ ์˜ˆ์‹œ ์ฝ”๋“œ๋„ ํ•จ๊ป˜ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. React.memo๋ž€ โ“ memo๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ•ด๋‹น ์ปดํฌ๋„ŒํŠธ์˜ props๊ฐ€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋ฆฌ๋ Œ๋”๋ง์„ ๊ฑด๋„ˆ๋›ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๋ฉ”๋ชจํ™”๋œ ๋ฒ„์ „์˜ ์ปดํฌ๋„ŒํŠธ๋กœ ํ•ด๋‹น ์ปดํฌ๋„ŒํŠธ์˜ props๊ฐ€ ๋ณ€๊ฒฝ๋  ๋•Œ๋งŒ ๋ฆฌ๋ Œ๋”๋ง์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ปค๋‹ค๋ž€ ํ๋ชจ์˜ ์ปดํฌ๋„ŒํŠธ๋‚˜ ๋ณต์žกํ•œ ์ƒํ™ฉ์—์„œ ๋ถˆํ•„์š”ํ•œ ๋ฆฌ๋ Œ๋”๋ง์„ ๋ง‰์•„ ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋™์ž‘ ์›๋ฆฌ ๐Ÿ’ก React.memo๋Š” ์ธ์ž๋กœ ๋“ค์–ด๊ฐ„ ์ปดํฌ๋„ŒํŠธ์— ์–ด๋–ค props๊ฐ€ ์ž…๋ ฅ๋˜๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์ž…๋ ฅ๋˜๋Š” ๋ชจ๋“  props์˜ ์‹ ๊ทœ ๊ฐ’์„ ํ™•์ธํ•œ ๋’ค ์ด๋ฅผ ๊ธฐ์กด์˜ props์˜ ๊ฐ’๊ณผ ๋น„๊ตํ•˜๋„๋ก ๋ฆฌ์•กํŠธ์—๊ฒŒ ์ „..

article thumbnail
[React] ReactDOM.render is no longer supported in React 18 ์˜ค๋ฅ˜ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

๐Ÿ“– ๋“ค์–ด๊ฐ€๋ฉฐ React + Typescript ํ™˜๊ฒฝ์—์„œ React Testing library์™€ jest๋ฅผ ์ด์šฉํ•ด์„œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ์— ๋Œ€ํ•ด์„œ ๊ณต๋ถ€ํ•˜๋ ค๋Š” ๋„์ค‘์— ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ๊ณ , ๊ฒฐ๊ณผ์ ์œผ๋กœ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ํ•ด์•ผ ํ•  ๊ฒƒ์€ ๋ณ„ ๊ฑฐ ์•„๋‹ˆ์—ˆ์ง€๋งŒ ํž˜๋“ค๊ฒŒ(?) ํ•ด๊ฒฐ ๋ฐฉ์•ˆ์„ ์ฐพ์•„์„œ ๊ธฐ๋ก์„ ํ•ด๋‘๋ ค๊ณ  ํ•œ๋‹ค. 1. ๋ฌธ์ œ ๋ฐœ์ƒ CRA typescript๋กœ ํŒจํ‚ค์ง€๋“ค์„ ์„ค์น˜ํ•˜๊ณ  ๋‚œ ํ›„์— npm test ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ž‘์„ฑ๋˜์–ด ์žˆ๋Š” ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋“ค์ด ์ž˜ ์‹คํ–‰์ด ๋˜๋Š”์ง€ ํ™•์ธ์„ ํ•ด๋ดค๋‹ค. ํ•˜์ง€๋งŒ ReactDOM.render is no longer supported in React 18 ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž์ฒด๋Š” PASS๊ฐ€ ๋˜๋ฉด์„œ ์ž˜ ์‹คํ–‰์ด ๋˜์—ˆ์ง€๋งŒ ์œ„์™€ ๊ฐ™์€ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๊ฐ€ ๋งค์šฐ ์‹ ๊ฒฝ ์“ฐ์˜€๋‹ค. 2. ๋ฐœ์ƒ ์›์ธ Rea..

article thumbnail
[Redux] Redux๋ฅผ ์™œ ์‚ฌ์šฉํ•ด์•ผ ํ• ๊นŒ? Redux(๋ฆฌ๋•์Šค)๋ž€?

๐Ÿ“– ๋“ค์–ด๊ฐ€๋ฉฐ React๋ฅผ ์ฒ˜์Œ ํ•™์Šตํ•˜๋˜ ์‹œ์ ˆ, Redux๊ฐ€ ๋ฌด์—‡์ธ์ง€, ๊ทธ๋ฆฌ๊ณ  ์™œ ํ•„์š”ํ•œ์ง€์— ๋Œ€ํ•œ ๋ช…ํ™•ํ•œ ์ดํ•ด ์—†์ด 'Redux๋ฅผ ์™œ ๋ฐฐ์›Œ์•ผ ํ•˜๋Š”์ง€'์— ๋Œ€ํ•ด ์˜๋ฌธ์„ ๊ฐ–๊ณค ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ, React๋ฅผ ์ด์šฉํ•˜์—ฌ ํด๋ก  ์ฝ”๋”ฉ์„ ํ•˜๊ฑฐ๋‚˜ ์‹ค์ œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ฉ€๋ฆฌ ๋–จ์–ด์ ธ ์žˆ์–ด ์ž์‹ ์ปดํฌ๋„ŒํŠธ์—๊ฒŒ ๋ถˆํ•„์š”ํ•˜๊ฒŒ ๋งŽ์€ Props๋ฅผ ์ „๋‹ฌํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ(Props Driling)์„ ๊ฒช๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ๊ฒฝํ—˜์„ ํ†ตํ•ด "์ „์—ญ ์ƒํƒœ ๊ด€๋ฆฌ"์˜ ํ•„์š”์„ฑ์„ ์ฒด๊ฐํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” Redux์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋ ค ํ•ฉ๋‹ˆ๋‹ค. Redux๋ž€ โ“ Redux๋Š” JavaScript ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ƒํƒœ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. Redux๋Š” React์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ๋˜..

article thumbnail
[React] Link ํด๋ฆญ ์‹œ url์€ ๋ฐ”๋€Œ์ง€๋งŒ ์ปดํฌ๋„ŒํŠธ๋Š” ์—…๋ฐ์ดํŠธ ๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐ (์˜ค๋ฅ˜ ๋…ธํŠธ)

๐Ÿ“– ๋“ค์–ด๊ฐ€๋ฉฐ ๋ฆฌ์•กํŠธ๋กœ ํŒ์ฝ˜ ํƒ€์ž„์„ ํด๋ก  ์ฝ”๋”ฉํ•˜๋Š” ํฌํŠธํด๋ฆฌ์˜ค๋ฅผ ์ œ์ž‘ํ•˜๋ฉด์„œ ๊ณต๋ถ€ ์ค‘์—, Link (react-router-dom)์„ ํด๋ฆญํ•˜๋ฉด url์€ ๋ณ€๊ฒฝ์ด ๋˜์ง€๋งŒ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์—…๋ฐ์ดํŠธ๊ฐ€ ๋˜์ง€ ์•Š์•„์„œ ์ œ๋Œ€๋กœ ๊ธฐ๋Šฅ์ด ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๋ฌธ์ œ๋ฅผ ๊ฒช์—ˆ๋‹ค. ํ•ด๊ฒฐํ•˜๊ณ  ๋‚˜๋‹ˆ๊น ์ •๋ง ๋ณ„ ๊ฒƒ ์•„๋‹ˆ์—ˆ์ง€๋งŒ...(๊ฐœ๋… ๋ถ€์กฑ) ๋ฌด์—‡์ด ๋ฌธ์ œ์ด๊ณ , ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ–ˆ๋Š”์ง€ ๋‹ค์‹œ ๋ณต์Šตํ•˜๊ธฐ ์œ„ํ•ด ์ •๋ฆฌํ•ด๋ณธ๋‹ค. โ— ๋ฌธ์ œ ๋ฌธ์ œ์˜ ํ™”๋ฉด์ด๋‹ค. Detail ์ปดํฌ๋„ŒํŠธ์—์„œ ํ•ด๋‹น ์˜ํ™”์˜ ๊ด€๋ จ ์˜ํ™” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์™€์„œ ๋ณด์—ฌ์ฃผ๋Š” ์ปดํฌ๋„ŒํŠธ๋‹ค. Detail ์ปดํฌ๋„ŒํŠธ์—์„œ ๊ด€๋ จ ์˜ํ™”๋ฅผ ๋ณด์—ฌ์ค€ ๋’ค, ๊ด€๋ จ ์˜ํ™”๋ฅผ ํด๋ฆญํ•˜๋ฉด ๊ทธ ๊ด€๋ จ ์˜ํ™”์˜ Detail ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ Œ๋”๋ง ๋˜๊ฒŒ ๊ตฌํ˜„ํ•˜๊ณ  ์‹ถ์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ์‚ฌ์ง„์— ๋ณด์ด๋Š” ๋ฐ”์™€ ๊ฐ™์ด ํด๋ฆญ์„ ํ•˜๋ฉด url์€ ์ž˜ ๋ณ€๊ฒฝ์ด ๋˜์ง€๋งŒ ํ•ด๋‹น ์˜ํ™”์˜ Deta..

article thumbnail
[React]Module not found: Can't resolve './node_modules/react' ์˜ค๋ฅ˜ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

๐Ÿ“– ๋“ค์–ด๊ฐ€๋ฉฐ ์ตœ๊ทผ 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 ๋˜๋Š” ..