๐Ÿ’ป์šฉ๋‡ฝ ๊ฐœ๋ฐœ ๋…ธํŠธ๐Ÿ’ป
article thumbnail
[React] ์ƒํƒœ ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•œ ๊ณ ์ฐฐ (feat. redux-tookit, recoil, zustand, jotai)

๐Ÿ“– ๋“ค์–ด๊ฐ€๋ฉฐ ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” React์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์ƒํƒœ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•ด์„œ ๊ฐ๊ฐ์˜ ํŠน์ง•๊ณผ ๊ฐœ์ธ์ ์ธ ๊ฒฌํ•ด๊ฐ€ ๋“ค์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ํฌ์ŠคํŒ…์—์„œ ๋‹ค๋ฃฐ ์ฃผ์š” ๋„ค ๊ฐ€์ง€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. react-redux & redux-toolkit recoil zustand jotai React์—์„œ ์ƒํƒœ ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ํ•จ๊ป˜ ๊ฐœ๋ฐœ์„ ํ•˜๋‹ค ๋ณด๋ฉด ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ๋„ค ๊ฐ€์ง€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ค‘ ํ•˜๋‚˜์ฏค์€ ๋ถ„๋ช… ์•Œ๊ณ  ๊ณ„์‹œ๋ฆฌ๋ผ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์œ„ ์ด๋ฏธ์ง€๋Š” ์ตœ๊ทผ 1๋…„๊ฐ„ ๋„ค ๊ฐ€์ง€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ NPM ๋™ํ–ฅ์ž…๋‹ˆ๋‹ค. ํ˜„์žฌ ์ถ”์„ธ๋กœ ๋ดค์„ ๋•Œ 1์œ„: redux (react-redux & redux-tookit) 2์œ„: zustand 3์œ„: jotai 4์œ„: recoil ์œ„ ์ˆœ์œ„๋กœ ๋ณด์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ ๊ฐ„๋‹จํ•œ ์ฝ”๋“œ ์˜ˆ์ œ์™€ ํ•จ๊ป˜ ํŠน์ง•์„ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. Redux..

article thumbnail
[React] ๊ฐ€์ƒ ๋”(Virtual DOM)์ด ๋ฌด์—‡์ด๊ณ  ์™œ ์ค‘์š”ํ• ๊นŒ์š”?

๐Ÿ“– ๋“ค์–ด๊ฐ€๋ฉฐ ๋ฆฌ์•กํŠธ๊ฐ€ ๋›ฐ์–ด๋‚œ ์„ฑ๋Šฅ์„ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ๋Š” ๋น„๊ฒฐ ์ค‘ ํ•˜๋‚˜๋Š” ๋ฐ”๋กœ ๊ฐ€์ƒ ๋”(Virtual DOM)์ž…๋‹ˆ๋‹ค. ์ด๋Š” ๋ฆฌ์•กํŠธ์˜ ํ•ต์‹ฌ ๊ฐœ๋… ์ค‘ ํ•˜๋‚˜๋กœ ๊ฐ€์ƒ ๋”์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. DOM(Document Object Model) ์›น ์‚ฌ์ดํŠธ์— ์ ‘์†ํ•˜๋ฉด ๋ณด์ด๋Š” ๊ฐ๊ฐ์˜ ์š”์†Œ(Element)๋“ค์ด ๋ชจ์—ฌ ํ•˜๋‚˜์˜ ๋ฌธ์„œ(Document)๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฌธ์„œ์˜ ๊ตฌ์กฐ๋ฅผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก ํ‘œํ˜„ํ•œ ๊ฒƒ์ด ๋ฐ”๋กœ DOM์ž…๋‹ˆ๋‹ค. DOM์€ ์š”์†Œ๋“ค์„ ํŠธ๋ฆฌ(Tree) ํ˜•ํƒœ๋กœ ํ‘œํ˜„ํ•˜๋ฉฐ, ๊ฐ ์š”์†Œ์— ํ•ด๋‹นํ•˜๋Š” ๋…ธ๋“œ(Node)๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋“ค์€ DOM์ด ์ œ๊ณตํ•˜๋Š” API๋ฅผ ์ด์šฉํ•ด ์ด๋Ÿฌํ•œ DOM ๊ตฌ์กฐ์— ์ ‘๊ทผํ•˜๊ณ , ๋‚ด์šฉ์ด๋‚˜ ์Šคํƒ€์ผ์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ๊ณผ์ •์„ DOM ์กฐ์ž‘์ด๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์˜ˆ๋ฅผ ๋“ค์–ด, ์›น ..

article thumbnail
[React] ํ•จ์ˆ˜(Function) ์ปดํฌ๋„ŒํŠธ vs ํด๋ž˜์Šค(Class) ์ปดํฌ๋„ŒํŠธ ์ฐจ์ด๊ฐ€ ๋ญ˜๊นŒ์š”?

๐Ÿ“– ๋“ค์–ด๊ฐ€๋ฉฐ ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ ๋„์ž… ๋ฆฌ์•กํŠธ์—์„œ ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ๋Š” ๋ฆฌ์•กํŠธ๊ฐ€ ์ฒ˜์Œ ์ƒ๊ฒผ์„ ๋•Œ๋ถ€ํ„ฐ ์žˆ์—ˆ์ง€๋งŒ, ์ฒ˜์Œ์—๋Š” ์ƒํƒœ๊ด€๋ฆฌ๋‚˜ ์ƒ๋ช…์ฃผ๊ธฐ ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์–ด์„œ ์ฃผ๋กœ ๋‹จ์ˆœํ•œ ํ‘œํ˜„์„ ์œ„ํ•œ ์šฉ๋„๋กœ ์‚ฌ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ, ๋ฆฌ์•กํŠธ 16.8 ๋ฒ„์ „์—์„œ Hooks๊ฐ€ ๋„์ž…๋˜๋ฉด์„œ ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ์—์„œ๋„ ์ƒํƒœ๊ด€๋ฆฌ์™€ ์ƒ๋ช…์ฃผ๊ธฐ ๋ฉ”์†Œ๋“œ์™€ ์œ ์‚ฌํ•œ ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Hooks์˜ ๋„์ž…์€ ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ์˜ ํ™œ์šฉ ๋ฒ”์œ„๋ฅผ ํฌ๊ฒŒ ํ™•์žฅ์‹œํ‚ค๊ณ , ํ˜„์žฌ๋Š” ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ๋งŒ์œผ๋กœ๋„ ๋Œ€๋ถ€๋ถ„์˜ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๊ณ , ๊ทธ ๊ฒฐ๊ณผ ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ์˜ ์‚ฌ์šฉ์ด ํฌ๊ฒŒ ๋Š˜์—ˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ๋ฆฌ์•กํŠธ ๊ณต์‹๋ฌธ์„œ์—์„œ๋„ ํด๋ž˜์Šค ์ปดํฌ๋„ŒํŠธ๋ณด๋‹ค ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ๋กœ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ•จ์ˆ˜ํ˜•(Functional)์ด ์•„๋‹ˆ๋ผ ํ•จ์ˆ˜(Function) ์ปดํฌ๋„ŒํŠธ๋ผ๊ณ  ๋ถ€๋ฅด..

article thumbnail
[React] ์„ฑ๋Šฅ ์ตœ์ ํ™” useCallback์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ธฐ

๐Ÿ“– ๋“ค์–ด๊ฐ€๋ฉฐ ์ด์ „ ๊ธ€ React.memo ๊ธ€์—์„œ ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ์—์„œ ํ•จ์ˆ˜๋ฅผ props๋กœ ๋ฐ›์„ ๋•Œ ํ•ด๊ฒฐํ•  ์ˆ˜ ์—†๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” useCallback์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. useCallback์ด๋ž€ โ“ ๋จผ์ € React์—์„œ useCallback์€ ๋ฆฌ๋ Œ๋”๋ง ์‚ฌ์ด์— ํ•จ์ˆ˜ ์ •์˜๋ฅผ ์บ์‹œ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” React ํ›…์ž…๋‹ˆ๋‹ค. ์ฆ‰, useCallback ํ›…์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ปดํฌ๋„ŒํŠธ ์‹คํ–‰ ์ „๋ฐ˜์— ๊ฑธ์ณ ํ•จ์ˆ˜๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ํ›…์œผ๋กœ React์— ํ•จ์ˆ˜๋ฅผ ์บ์‹ฑํ•˜๊ณ  ๋งค ์‹คํ–‰๋งˆ๋‹ค ํ•ด๋‹น ํ•จ์ˆ˜๋ฅผ ์žฌ์ƒ์„ฑ๋˜๋Š” ์ƒํ™ฉ์„ ๋ง‰์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ ๋ฐฉ๋ฒ• ์บ์‹ฑํ•˜๋ ค๋Š” ํ•จ์ˆ˜๋ฅผ useCallback์œผ๋กœ ๋ž˜ํ•‘ ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. // Button.js const Button = ({ onClick }) => { console.log('..

article thumbnail
[React] ์„ฑ๋Šฅ ์ตœ์ ํ™” React.memo์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ธฐ

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

article thumbnail
[React] ํ™”๋ฉด(DOM) ์บก์ณ ๋ฐ ์ €์žฅ ๊ธฐ๋Šฅ ๊ตฌํ˜„ํ•˜๊ธฐ (feat. html2canvas, file-saver)

๐Ÿ“– ๋“ค์–ด๊ฐ€๋ฉฐ React์—์„œ ํ™”๋ฉด (DOM)๋ฅผ ์บก์ฒ˜, ์ €์žฅํ•˜๋Š” ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋ ค ํ•ฉ๋‹ˆ๋‹ค. ์ž‘์€ ํ† ์ด ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋ฉด์„œ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฌธ์ œ๋ฅผ ๋งž์ด ํ–ˆ์—ˆ๋Š”๋ฐ, ๊ฒฐ๊ณผ์ ์œผ๋กœ ์„ฑ๊ณตํ•œ ๋ฐฉ๋ฒ•๋“ค๋กœ ํฌ์ŠคํŒ…ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์บก์ณ(์Šคํฌ๋ฆฐ์ƒท)์„ ๋„์™€์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค ๋Œ€ํ‘œ์ ์œผ๋กœ html2canvas, dom-to-image, html-to-image ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋ฉด์„œ html2canvas์™€ dom-to-image๋ฅผ ๋ชจ๋‘ ์‚ฌ์šฉํ•ด ๋ดค์Šต๋‹ˆ๋‹ค. ์ œ๊ฐ€ ์‚ฌ์šฉํ•ด ๋ณธ ๋‘ ๊ฐ€์ง€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•ด์„œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋‘ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ชจ๋‘ ์˜์—ญ์„ ์ •ํ™•ํ•˜๊ฒŒ ์บก์ฒ˜ํ•˜๊ณ  DOM ์š”์†Œ์— ์ ์šฉ๋œ CSS ์Šคํƒ€์ผ์„ ์บก์ฒ˜ํ•˜๋Š” ๋ฐ ํฐ ๋ฌธ์ œ๋Š” ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ dom-to-image๊ฐ€ html2canvas๋ณด๋‹ค ๋” ๋น ๋ฅด๊ณ  ์•ˆ์ •์ ์ด๋ผ๊ณ  ํ•˜๋Š” ์‚ฌ์šฉ์ž๋„ ์žˆ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค..

article thumbnail
[React Native] ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ํ™˜๊ฒฝ์—์„œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜(.env) ์ ์šฉํ•˜๊ธฐ

๐Ÿ“– ๋“ค์–ด๊ฐ€๋ฉฐ ์ตœ๊ทผ React Native + TypeScript ๋กœ ๊ฐ„๋‹จํ•œ ์–ดํ”Œ์„ ๋งŒ๋“ค๋ฉด์„œ ๊ณต๋ถ€ํ•˜๋˜ ๋„์ค‘์— ํ™˜๊ฒฝ ๋ณ€์ˆ˜ (env)๋ฅผ ์ ์šฉ์ด ํ•„์š”ํ–ˆ๋Š”๋ฐ, ๊ทธ๋ƒฅ React์—์„œ ์‚ฌ์šฉํ•˜๋˜ ๋ฐฉ๋ฒ•๊ณผ ์กฐ๊ธˆ ๋‹ค๋ฅธ ๊ฒƒ ๊ฐ™์•„์„œ ์ƒ์†Œํ–ˆ์Šต๋‹ˆ๋‹ค. 1. react-native-dotenv react-native-dotenv๋Š” React Native ํ™˜๊ฒฝ์—์„œ ํ™˜๊ฒฝ๋ณ€์ˆ˜(env)๋ฅผ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ„ฐ๋ฏธ๋„์„ ์ผœ๊ณ  ํ•ด๋‹น ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. npm i react-native-dotenv ๋˜๋Š” yarn add react-native-dotenv ๊ทธ๋ฆฌ๊ณ  ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ํ™˜๊ฒฝ์—์„œ๋Š” ์ถ”๊ฐ€๋กœ types๋ฅผ ์„ค์น˜ํ•ด ์ค˜์•ผ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ํ™˜๊ฒฝ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. npm install -D @types/react-native-dote..

article thumbnail
[React] Jest์™€ React testing library๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ฐ„๋‹จํ•œ React app ํ…Œ์ŠคํŠธ ํ•ด๋ณด๊ธฐ (feat. TDD)

๐Ÿ“– ๋“ค์–ด๊ฐ€๋ฉฐ ์ตœ๊ทผ 'ํด๋ฆฐ ์ฝ”๋“œ'์ฑ…๊ณผ ์—ฌ๋Ÿฌ ๊ฐœ๋ฐœ ๊ด€๋ จ ์˜์ƒ์ด๋‚˜ ๋ฌธ์„œ๋ฅผ ๋ณด๊ณ  ํ…Œ์ŠคํŠธ ์ฝ”๋“œ์˜ ์ค‘์š”์„ฑ์„ ๊นจ๋‹ซ๊ฒŒ ๋˜์—ˆ๋‹ค. ์•ž์œผ๋กœ ๊ฐœ๋ฐœ์„ ํ•˜๋ฉด์„œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•ด์„œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ๋จผ์ € ์ž‘์„ฑํ•˜๊ณ  ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ํ†ต๊ณผํ•˜๊ธฐ ์œ„ํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” TDD ๊ฐœ๋ฐœ ๋ฐฉ์‹์œผ๋กœ React์—์„œ Jest์™€ React testing library๋กœ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฒ•์„ ๊ณต๋ถ€ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ๋ณต์Šตํ•˜๊ณ  ์ •๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๊ธ€์„ ์ž‘์„ฑํ•ด ๋ณธ๋‹ค. ํ•ด๋‹น ๊ธ€์—์„œ๋Š” ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด ์ˆซ์ž๊ฐ€ ์ฆ๊ฐ๋˜๋Š” ๊ฐ„๋‹จํ•œ ์•ฑ์„ TDD ๊ฐœ๋ฐœ ๋ฐฉ์‹์œผ๋กœ ํ…Œ์ŠคํŠธํ•˜๊ณ  ๋งŒ๋“ค์–ด ๋ณผ ๊ฒƒ์ด๋‹ค. Jest์™€ React testing library Jest ? Jest๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์™€ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ์— ๋Œ€ํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ…Œ์ŠคํŠธ..

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..